运算符与类型转换探究

参考资料:null == undefined ?

  • null与undefined
    undefined,一个变量最原始的状态,而非人为操作的结果。
    null,一个对象被人为的重置为空对象,而非一个变量最原始的状态 。

  • 关于typeof null == 'object' 的解释
    null 有属于自己的类型 Null,而不属于Object类型,typeof 之所以会判定为 Object 类型,是因为JavaScript 数据类型在底层都是以二进制的形式表示的,二进制的前三位为 0 会被 typeof 判断为对象类型,而 null 的二进制位恰好都是 0 ,因此,null 被误判断为 Object 类型。

  • 关于undefined == null;的解释
    ECMAScript 规范认为,既然 null 和 undefined 的行为很相似,并且都表示 一个无效的值,那么它们所表示的内容也具有相似性。
    注意,这里无法用类型转换来解释,因为:

Number(null); // 0
Number(undefined); // NaN
null == 0 ; //false
  • if的判断
if ("") {
    console.log('empty')
}  //undefined
if (" ") {
    console.log('empty')
}  //empty
类型结果
Undefinedfalse
Nullfalse
Boolean直接判断
Number+0, −0, 或者 NaN 为 false, 其他为 true
String空字符串(长度为零)为 false,其他都为 true
Objecttrue

- == 的判断
if判断不一样的是,==是要把两边的值转化为number进行判断。对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果。
所以才会有:

"" == 0;   //true
" " == 0;  //true
"hello" == true;  //false

toNumber

类型结果
UndefinedNaN
Null0
Booleanture -> 1, false -> 0
String空字符串为 0,“abc” -> NaN, “123” -> 123
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值