同学你好,关于同学的问题解答如下:
1、同学所说的”null转换为数字类型是0,undefined转换为数字类型是NaN“是进行强制类型转换为数字的结果。
2、在使用==进行比较时,ECMA规范中规定:如果两个数据类型不同,则会将两个不一样的数据类型,隐式强制转换成相同的数据类型,然后再进行比较。
3、结合代码以及undefined==null的返回结果,推断上述第二条的ECMA规范的规定:
由此推断出,判断undefined==null时,是用Boolean()方法进行隐式强制类型转换的。将undefined和null转换成Boolean值,然后再继续转换进行比较。因此返回true。
说明:
1、undefined==null返回true,属于特殊的判断返回值,需要大家特殊去记忆,记住会进行隐式强制类型转换,返回值是true即可。
2、也可以从表象上去理解:在JS中,null和undefined都代表着无效的值,所以相等,返回值是true
4、拓展知识点(了解即可)
null 有属于自己的类型Null,而不属于Object类型,typeof之所以会判定为Object类型,是因为JS数据类型在底层都是以二进制的形式表示的,二进制的前三位为0会被typeof判断为对象类型,而null的二进制位恰好都是0,因此null被误判断为Object 类型。可以使用如下方法精准检测null的类型:
Object.prototype.toString.call(null)
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星