js 的隐式转换与显式转换
隐式转换
1.undefined与null相等,但不恒等(===)
2.一个是number一个是string时,会尝试将string转换为number
3.隐式转换将boolean转换为number,0或1
4.隐式转换将Object转换成number或string,取决于另外一个对比量的类型
5.对于0、空字符串的判断,建议使用 “===” 。
6.“==”会对不同类型值进行类型转换再判断,“===”则不会。它会先判断两边的值类型,类型不匹配时直接为false。
undefined == null; // true 1 == true; // true 2 == true; // false 0 == false; // true 0 == ''; // true NaN == NaN; // false NaN不等于任何值 [] == false; // true [] == ![]; // true '6' - '3' // 3 1234 + 'abcd' // "1234abcd"
显示转换
显示转换一般指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。
Number:
Number('1234') // 1234 Number('1234abcd') // NaN Number('') // 0 Number(true) // 1 Number(null) // 0 Number(undefined) // NaN
String:
String(1234) // "1234" String('abcd') // "abcd" String(true) // "true" String(undefined) // "undefined" String(null) // "null"
Boolean:
Boolean(0) // false Boolean(undefined) // false Boolean(null) // false Boolean(NaN) // false Boolean('') // false