Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

类型转换 #56

Open
xiaochengzi6 opened this issue Oct 11, 2022 · 0 comments
Open

类型转换 #56

xiaochengzi6 opened this issue Oct 11, 2022 · 0 comments
Assignees
Labels
JavaScript JavaScript 语言的学习

Comments

@xiaochengzi6
Copy link
Owner

xiaochengzi6 commented Oct 11, 2022

类型转换

js 中 es6之前的类型有六种: null, undefined, boolean, string, number, object 五种基本类型,一种复杂类型

在涉及到类型转换或者隐式类型转换时候熟悉这个很关键 js 中有 7 个假值 这七个假值都会返回 false ,

js 中存在7种假值:false , '', +0, -0, NaN, null, undefined 当转为布尔类型时会直接返回 false 除此之外都会返回 true
格外注意的是数组 Boolean([]) === true 判断数组是否存值必须通过判断属性 length

需要注意的转换类型其实就三点
1、基本类型转换String类型
2、基本类型转换Number类型
3、Object类型转换基本类型

基本类型转 String 类型

image

基本类型转换Number类型

image

对象转换基本类型

JavaScript 对象有两个不同的方法来执行转换,一个是 toString,一个是 valueOf

所有的对象除了 null 和 undefined 之外的任何值都具有 toString 方法,通常情况下,它和使用 String 方法返回的结果一致。toString 方法的作用在于返回一个反映这个对象的字符串

js 中对象类型有很多比如 Array, Function, Reg, Date, Math, Json 但是在针对不同对象时 toString 方法也就不同

  1. 数组的 toString 方法将每个数组元素转换成一个字符串,并在元素之间添加逗号后合并成结果字符串。
  2. 函数的 toString 方法返回源代码字符串。
  3. 日期的 toString 方法返回一个可读的日期和时间字符串。
  4. RegExp 的 toString 方法返回一个表示正则表达式直接量的字符串。

默认的 valueOf 方法返回这个对象本身,数组、函数、正则简单的继承了这个默认方法,也会返回对象本身。日期是一个例外,它会返回它的一个内容表示: 1970 年 1 月 1 日以来的毫秒数。

对象转换成原始类型

对象转换成原始类型会调用 ToPrimitive 转换成原始类型

ToPrimitive(input[, PreferredType])

第一个参数是 input,表示要处理的输入值。

第二个参数是 PreferredType,非必填,表示希望转换成的类型,有两个值可以选,Number 或者 String。

当不传入 PreferredType 时,如果 input 是日期类型,相当于传入 String,否则,都相当于传入 Number

如果传入的 input 是 Undefined、Null、Boolean、Number、String 类型,直接返回该值。

如果是 ToPrimitive(obj, Number),处理步骤如下:

  1. 如果 obj 为 基本类型,直接返回
  2. 否则,调用 valueOf 方法,如果返回一个原始值,则 JavaScript 将其返回。
  3. 否则,调用 toString 方法,如果返回一个原始值,则 JavaScript 将其返回。
  4. 否则,JavaScript 抛出一个类型错误异常。

如果是 ToPrimitive(obj, String),处理步骤如下:

  1. 如果 obj为 基本类型,直接返回
  2. 否则,调用 toString 方法,如果返回一个原始值,则 JavaScript 将其返回。
  3. 否则,调用 valueOf 方法,如果返回一个原始值,则 JavaScript 将其返回。
  4. 否则,JavaScript 抛出一个类型错误异常。

参考文章

类型转换

@xiaochengzi6 xiaochengzi6 self-assigned this Oct 11, 2022
@xiaochengzi6 xiaochengzi6 added the JavaScript JavaScript 语言的学习 label Oct 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JavaScript JavaScript 语言的学习
Projects
None yet
Development

No branches or pull requests

1 participant