一次弄懂JS数据类型转化
当检测的值不是数字类型,浏览器会自己调用Number方法先把它转换为数字,然后再检测是否为非有效数字,例:
isNaN('3
把其他类型转换为数字类型发生的情况:1)isNaN检测的时候: 当检测的值不是数字类型,浏览器会自己调用Number方法先把它转换为数字,然后再检测是否为非有效数字,例:
2)基于parseInt/parseFloat/Number手动转化为数字类型3)数学运算 + , - , * , / , %4)在基于 == 比较的时候,有时候也会把其他值转换为数字类型转换规律把字符串转数字 只要遇到一个非有效数字字符,结果就是NaN
把布尔转换为数字
把null、undefined转换为数字
把引用类型转换为数字
把其他类型转换为字符串发生的情况1)基于alert/confirm/prompt/document.write等方法输出内容的时候,会把输出的值转换为字符串,然后再输出
2)基于 '+' 进行字符串拼接的时候
3)把引用值转换为数字的时候,首先会转换为字符串,然后再转换为数字
4)给对象设置属性,如果属性名不是字符串,首先转换为字符串,然后再当作属性存储到对象中5)手动调用toString/toFixed/join/String等方法的时候
转换规律 除了对象,其他数据类型都是常规转换 无论对象是什么样,toString的结果都是**[object Object]** 把其他值转换为布尔类型发生的情况基于! / !! / Boolean等方法的转换条件判断中的条件最终都会转换为布尔类型转换规律
其余全部都为true 特殊情况:数学运算和字符串拼接'+'1、当表达式中出现字符串,就是字符串拼接,否则就是数学运算
2、引用类型转换为数字,首先会转换为字符串,最后变成字符串拼接
3、{}块级作用域 接 数学预算
"=="比较 "=="在进行比较的时候,如果左右两边的数据类型不一样,则先转换为相同的数据类型,再进行比较 "对象==对象" 地址空间相等则范围true "对象==数字" 把对象转换为数字Mssq类型转换函数,然后再进行比较 "对象==布尔" 把对象和布尔都转换为数字,再进行比较 "对象==字符串" 把对象和字符串都转换为数字 "字符串==数字" 字符串转换为数字 "字符串==bool" 都转换为数字 "bool==数字" bool转换为数字
(编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |