强制类型转换
强制类型转换是指从一种类型隐式地转换成另一种类型。当调用运算符时,javascript会自动判断运算方法并对其进行强制类型转换。
下面来看一下强制类型转换时调用的一些函数
Boolean()
value:undefined、null、false、0、NaN、"",时为false
其他时候为true
注意:
>Boolean(new Boolean(false));
true
new Boolean(false):返回一个Object,Boolean(Object)=true
Number()
转转换成数字
undefined => NaN
null 、false => 0
true => 0
字符串会被解析(只会忽略开头和结尾空格,有特殊字符会解析为NaN)
>Number("123#")
NaN
建议使用ParseInt(ParseFloat):会一直解析到最后一个能解析的字符
>ParseInt("ads123dsa12123213");
123
对象会执行valueOf如果可以解析即为值,如果不能解析再调用toString方法,再解析
String()
将原始值转换成字符串
对象会先调用toString方法
Object()
对象会转换成它们自身
undefined 、 null =》 {} (空)
Object.valueOf()=this 默认返回 this
Object.toString()='[object object]'默认返回数据类型
可以通过在对象中重载valueOf和toString方法来设置强制类型转换的值
运算符
严格相等(===)与宽松 相等(==)
严格相等必须要求比较的值必须是相同数据类型
普通想等会先尝试将两个不同类型的值进行转换,再使用严格相等来进行比较
注意:
>undefined===undefined | >null===null | >NaN===NaN |
true | true | false |
加号运算符(字符串优先)
加号运算符会对他的运算数进行检测,如果其中一个是字符串,另一个也会转换成字符串,并进行拼接
布尔运算符
&&(遇到false即停止)
||(遇到true即停止)
>0&&x
false
不会执行到x,所以不会报错(x没定义)
>1||x
true
不会执行到x,所以不会报错(x没定义)