美文网首页基础JS
JS常用API手册9-常用类型的相互转换

JS常用API手册9-常用类型的相互转换

作者: 桃花島主 | 来源:发表于2017-11-24 17:02 被阅读3次
参数类型 false true
Undefined
Number ±0,NaN
String ""
Object null

双等号等价判断

Type(x) Type(y) Result
null Undefined true
Undefined null true
Number String x == toNumber(y)
String Number toNumber(x) == y
Boolean any toNumber(x) == y
any Boolean x == toNumber(y)
String or Number Object x == toPrimitive(y)
Object String or Number toPrimitive(x) == y
其他 其他 false

ToNumber[转化为数字

参数类型 结果
Undefined NaN
Null 0
Boolean 参数是true结果为1
参数是false结果为0
Number 不用转化
String 效果等价于Number(string)
"abc" --> NaN
"123" --> 123

Object转换数字的步骤

通过以下2个步骤进行转换

1.toPrimitive(inputParam, preferredType)转化为原始值
preferredType[Number|String]:代表了转换的偏好
if(Number){
  1>如果输入的值已经是个原始值,则直接返回它
  2>否则,如果输入的值是一个对象.则调用该对象的valueOf()方法.如果valueOf()方法的返回值是一个原始值,则返回这个原始值.
  3>否则,调用这个对象的toString()方法.如果toString()方法的返回值是一个原始值,则返回这个原始值.
  4>否则,抛出TypeError异常.
}else if(String){
        1>调用这个对象的toString()方法.如果toString()方法的返回值是一个原始值,则返回这个原始值.
        2>否则,如果输入的值是一个对象.则调用该对象的valueOf()方法.如果valueOf()
}else{
        Date类型的对象会被设置为String,其它类型的值会被设置为Number
}
2.toNumber()将这个原始值转化为数字

ToPrimitive()[转化为原始值]

参数类型 结果
Object 通过以下3个步骤进行转换
1.valueOf()
2.toString()
3.an error
其他情况 不用转换

ToString()[转化为字符串]

参数类型 结果
Undefined "undefined"
Null "null"
Boolean "true" "false"
Number 转化为字符串
String 不用转换
Object 通过以下2个步骤进行转换
1.toPrimitive(obj, String)转化为原始值
2.toString()将这个原始值转化为字符串

有下面这样的一个加法操作.

value1 + value2

在计算这个表达式时,内部的操作步骤是这样的
将两个操作数转换为原始值

prim1 := ToPrimitive(value1)
prim2 := ToPrimitive(value2)

PreferredType被省略,因此Date类型的值采用String,其他类型的值采用Number.
如果prim1或者prim2中的任意一个为字符串,则将另外一个也转换成字符串,然后返回两个字符串连接操作后的结果.
否则,将prim1和prim2都转换为数字类型,返回他们的和.
总结:先转数字再转字符串

严格相等

类型 结果
Undefined true
Null true
Number NaN false
String 相同的字符串 true
Boolean 同为true或false true
Object 引用相同时 true
其他情况 false

相关文章

网友评论

    本文标题:JS常用API手册9-常用类型的相互转换

    本文链接:https://www.haomeiwen.com/subject/dsjfbxtx.html