旧书重读系列《JS设计模式》- 读书笔记 2

发布于 2022-06-02 23:01


chapter 3 


null VS undefined


声明变量但还没有对其初始化,此值是undefined


从逻辑角度看,unll 指为空指针,只要意在保存对象的变量还没有真正保存对象,那就明确让变量为null


null == undefined // true


NaN


NaN 特点: 

任何涉及NaN的操作,都返回NaN 

nan与任何值都不相同,  甚至是它自己


NaN == NaN // false

isNaN


JS 提供了 isNaN 来验证目标是否 “不是数值”


isNaN 接受一个参数后,会尝试将其转为数值,如果不能被转换为数值,则返回true 


JS 后面又新增了一个API。  Number.isNaN, 来看看这两者的区别
isNaN只是判断传入的参数是否能转换成数字,并不是严格的判断是否等于NaN
Number.isNaN与isNaN最的区别是,Number.isNaN不存在类型转换的行为
Number.isNaN 判断传入的参数是否严格的等于NaN(也就是 ===)
console.log(Number.isNaN(1 / 'hello')) // true


数值转换


Number()


转化规则:


Boolean 转为 1 / 0数字 -》 数字null -〉 0undefined -> NaN字符串 -》 按照具体情况转为数字或者NaN对象 -〉 调用对象的valueof方法,然后根据前面规规则进行转化,如果结果为NaN则调用toString



补充一些相关的面试题


== 操作符的强制类型转换规则?


对于 == 来说,如果对比双方的类型不一样,就会进行类型转换。假如对比 x 和 y 是否相同,就会进行如下判断流程:
首先会判断两者类型是否相同,相同的话就比较两者的大小;类型不相同的话,就会进行类型转换;会先判断是否在对比 nullundefined,是的话就会返回 true判断两者类型是否为 stringnumber,是的话就会将字符串转换为 number判断其中一方是否为 object 且另一方为 stringnumber 或者 symbol,是的话就会把 object 转为原始类型再进行判断


本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材