旧书重读系列《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 -〉 0
undefined -> NaN
字符串 -》 按照具体情况转为数字或者NaN
对象 -〉 调用对象的valueof方法,然后根据前面规规则进行转化,如果结果为NaN
则调用toString
补充一些相关的面试题
== 操作符的强制类型转换规则?
对于 == 来说,如果对比双方的类型不一样,就会进行类型转换。
假如对比 x 和 y 是否相同,就会进行如下判断流程:
首先会判断两者类型是否相同,相同的话就比较两者的大小;
类型不相同的话,就会进行类型转换;
会先判断是否在对比 null 和 undefined,是的话就会返回 true
判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材