We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
JS 类型转换
JavaScript 的原始类型有:number, string, boolean, null, undefined, Symbol。
三种类型转换 1 在 JS 中只有 3 种类型的转换 to string to boolean to number。 2 类型转换的逻辑在原始类型和对象类型上是不同的,但是他们都只会转换成上面 3 种类型之一。
string 类型转换
String() 方法可以用来显式将值转为字符串,隐式转换通常在有 + 运算符并且有一个操作数是 string 类型时被触发
Symbol 类型转 String 类型是比较严格的,它只能被显式的转换
Boolean 类型转换
Boolean() 方法可以用来显式将值转换成 boolean 型。
隐式类型转换通常在逻辑判断或者有逻辑运算符时被触发(|| && !)。
Boolean('') // false Boolean(0) // false Boolean(-0) // false Boolean(NaN) // false Boolean(null) // false Boolean(undefined) // false Boolean(false) // false
以上都为false 其他的为true
Number 类型转换
Number() 方法可以用来显式将值转换成 number 类型。 number 的隐式类型转换是比较复杂的,因为它可以在下面多种情况下被触发。
比较操作(>, <, <=, >=) 按位操作(| & ^ ~) 算数操作(- + * / %), 注意,当 + 操作存在任意的操作数是 string 类型时,不会触发 number 类型的隐式转换 一 元 + 操作 非严格相等操作(== 或者 != ),注意,== 操作两个操作数都是 string 类型时,不会发生 number 类型的隐式转换
当将一个字符串转换为一个数字时,引擎首先删除前尾空格、\n、\t 字符,如果被修剪的字符串不成为一个有效的数字,则返回 NaN。如果字符串为空,则返回 0。 Number() 方法对于 null 和 undefined 的处理是不同的, null 会转换为 0, undefined 会转换为 NaN
特殊规则: 1 当将 == 应用于 null 或 undefined 时,不会发生数值转换。null 只等于 null 或 undefined,不等于其他任何值。 2 NaN 不等于任何值,包括它自己
object 类型转换
对象通过内部 [[ToPrimitive]] 方法转换为原始类型,该方法负责数字和字符串转换。 [[ToPrimitive]] 方法接受两个参数一个输入值和一个需要转换的类型(Numer or String) number 和 string的转换都使用了对象的两个方法: valueOf 和 toString。这两个方法都在 Object.prototype 上被声明,因此可用于任何派生类,比如 Date, Array等。 通常上 [[ToPrimitive]] 算法如下:
�如果输入的值已经是原始类型,直接返回这个值。 输入的值调用 toString() 方法,如果结果是原始类型,则返回。 输入的值调用 valueOf() 方法,如果结果是原始类型,则返回。 如果上面 3 个步骤之后,转换后的值仍然不是原始类型,则抛出 TypeError 错误。
number 类型的转换首先会调用 valueOf() 方法,如果不在调用 toString() 方法。 string 类型的转换则相反。 大多数 JS 内置对象类型的 valueOf() 返回这个对象本身,其�结果经常被忽略,因为它不是一个原始类型。所以大多数情况下当 object 需要转换成 number 或 string 类型时最终都调��用了 toString() 方法。 当运算符不同时,[[ToPrimitive]] 方法接受的转换类型参数也不相同。当存在 == 或者 + 运算符时一般会��先触发 number 类型的转换再触发 string 类型转换。 在 JS 中你可以通过重写对象的 toString 和 valueOf 方法来修改对象到�原始类型转换的逻辑。
摘自: lvwxx/blog#18
The text was updated successfully, but these errors were encountered:
No branches or pull requests
JS 类型转换
JavaScript 的原始类型有:number, string, boolean, null, undefined, Symbol。
三种类型转换
1 在 JS 中只有 3 种类型的转换 to string to boolean to number。
2 类型转换的逻辑在原始类型和对象类型上是不同的,但是他们都只会转换成上面 3 种类型之一。
string 类型转换
String() 方法可以用来显式将值转为字符串,隐式转换通常在有 + 运算符并且有一个操作数是 string 类型时被触发
Symbol 类型转 String 类型是比较严格的,它只能被显式的转换
Boolean 类型转换
Boolean() 方法可以用来显式将值转换成 boolean 型。
隐式类型转换通常在逻辑判断或者有逻辑运算符时被触发(|| && !)。
Boolean('') // false
Boolean(0) // false
Boolean(-0) // false
Boolean(NaN) // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(false) // false
以上都为false 其他的为true
Number 类型转换
Number() 方法可以用来显式将值转换成 number 类型。
number 的隐式类型转换是比较复杂的,因为它可以在下面多种情况下被触发。
比较操作(>, <, <=, >=)
按位操作(| & ^ ~)
算数操作(- + * / %), 注意,当 + 操作存在任意的操作数是 string 类型时,不会触发 number 类型的隐式转换
一 元 + 操作
非严格相等操作(== 或者 != ),注意,== 操作两个操作数都是 string 类型时,不会发生 number 类型的隐式转换
当将一个字符串转换为一个数字时,引擎首先删除前尾空格、\n、\t 字符,如果被修剪的字符串不成为一个有效的数字,则返回 NaN。如果字符串为空,则返回 0。
Number() 方法对于 null 和 undefined 的处理是不同的, null 会转换为 0, undefined 会转换为 NaN
特殊规则:
1 当将 == 应用于 null 或 undefined 时,不会发生数值转换。null 只等于 null 或 undefined,不等于其他任何值。
2 NaN 不等于任何值,包括它自己
object 类型转换
对象通过内部 [[ToPrimitive]] 方法转换为原始类型,该方法负责数字和字符串转换。
[[ToPrimitive]] 方法接受两个参数一个输入值和一个需要转换的类型(Numer or String)
number 和 string的转换都使用了对象的两个方法: valueOf 和 toString。这两个方法都在 Object.prototype 上被声明,因此可用于任何派生类,比如 Date, Array等。
通常上 [[ToPrimitive]] 算法如下:
�如果输入的值已经是原始类型,直接返回这个值。
输入的值调用 toString() 方法,如果结果是原始类型,则返回。
输入的值调用 valueOf() 方法,如果结果是原始类型,则返回。
如果上面 3 个步骤之后,转换后的值仍然不是原始类型,则抛出 TypeError 错误。
number 类型的转换首先会调用 valueOf() 方法,如果不在调用 toString() 方法。 string 类型的转换则相反。
大多数 JS 内置对象类型的 valueOf() 返回这个对象本身,其�结果经常被忽略,因为它不是一个原始类型。所以大多数情况下当 object 需要转换成 number 或 string 类型时最终都调��用了 toString() 方法。
当运算符不同时,[[ToPrimitive]] 方法接受的转换类型参数也不相同。当存在 == 或者 + 运算符时一般会��先触发 number 类型的转换再触发 string 类型转换。
在 JS 中你可以通过重写对象的 toString 和 valueOf 方法来修改对象到�原始类型转换的逻辑。
摘自:
lvwxx/blog#18
The text was updated successfully, but these errors were encountered: