js数据类型转换注意点

JavaScript是一种动态类型语言,变量没有类型限制,但是数据本身和各种运算符是有类型的

如果运算符发现,数据的类型与预期不符,就会自动转换类型

使用Number函数,可以将任意类型的值转化成数值

如果参数值是字符串、布尔值、undefinednull,它们能被Number转成数值或NaN

// 数值转换后还是原来的值

Number(100) //100

// 如果字符串可以被解析为数值,则转换为相应的数值

Number("100") //100

// 如果字符串不可以被解析为数值,返回NaN

Number("100Abc") // NaN

// 空字符串转为0

Number("") // 0

// 布尔值true 转成1false 转成0

Number(true) // 1

Number(false) // 0

// undefined:转成 NaN

Number(undefined) // NaN

// null转成0

Number(null) // 0

Number函数将字符串转为数值,只要有一个字符无法转成数值,整个字符串就会被转为NaN

parseInt('42 cats') // 42

Number('42 cats') // NaN

上面代码中,parseInt逐个解析字符,而Number函数整体转换字符串的类型。

使用String函数,可以将任意类型的值转化成字符串。转换规则如下。

使用Boolean函数,可以将任意类型的变量转为布尔值。undefinednull0NaN的转换结果为false,其他的值全部为true。所有对象的布尔值都是true

不同类型的数据互相运算或者对非布尔值类型的数据求布尔值JavaScript会自动转换数据类型。

JavaScript遇到预期为数值的地方,系统内部会自动调用Number函数将参数值自动转换为数值除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。

"5" - "3"  //2

"5" * "3"  //15

true - 1    // 0

false - 1   // -1

"1" - 1    // 0

"5"* []    // 0

false/"5"   // 0

"abc"-1   // NaN

null+1    // 1

undefined+1 // NaN

上面代码中,运算符两侧的运算子,都被转成了数值。

由于自动转换具有不确定性,所以在数据预期为布尔值、数值、字符串的地方,应该使用BooleanNumberString函数进行显式转换。

 

posted @ 2020-03-28 21:39  zhstudy  阅读(304)  评论(0编辑  收藏  举报