数据类型转换的四大核心标准
把其他数据类型转换为—类型,首先要注意的是,显式转换和隐式转换,即我主动转换和被动转换
转换为number类型
- 显式转换
a) Number([val])
b) parseInt/parseFloat([val]) - 隐式转换(浏览器内部默认要先转换为Number在进行计算的)
a) isNaN([val])
b) 数学运算 出现“+”这种,会默认把加号两边的类型转换为数据类型然后进行运算。但是有一种特殊情况(+在出现字符串的情况下,不是数学运算,而是字符串拼接)
c) 在进行==比较的时候,有些值需要转换为数字再进行比较。
注意:只要出现非有效数字字符,结果都是NaN
console.log(Number(‘10px’)) 结果为NaN
console.log(Number(true)) 结果为1
console.log(Number(false)) 结果为0
console.log(Number(null)) 结果为0
console.log(Number(undefined)) 结果为NaN
把其他数据类型转换为字符串
- 显式转换
a) toString()
b) String() - 隐式转换
a) 加号运算的时候,如果某一边出现字符串,则是字符串拼接
b) 把对象转换为数字,需要先toString()转换为字符串,再去转换为数字
c) 基于alert,comfirm,promt,document.write…这些方式输出内容,都是先把内容转换为字符串,然后再输出的
把其他类型转换为字符串,一般都是直接“”包起来,只有{}普通对象调取的object是调取的Object.prototype.toString,不是转换为字符串,而是检测数据类型,返回的结果是“[object,object]”
把其他数据类型转换为布尔
- 显式转换
a) !转换为布尔值后取反
b) !!转换为布尔类型
c) Boolean([val]) - 隐式转换
a) 在循环或者条件判断中,条件处理的结果就是布尔类型
b) 。。。。
规则:只有‘0’,null, NaN,undefined,空字符串这五个值会变成布尔类型的FALSE,其余的都是TRUE
parseInt机制:从字符串左侧第一个字符开始,查找有效数字的字符(遇到非有效数字字符停止查找,不论后面是否还有数字字符,都不再找了),把找到的有效数字字符转换为数字,如果一个都没找到结果就是NaN(parseFloat比他多识别一个小数点)
{}+0
左边的{}认为是一个代码块,不参与运算
运算的处理结果是+00
({}+0)参与到数学运算之中,“[object,object]”
0+{}
这个是数学运算
处理的结果是“0[object,object]”