这篇先只讨论基础类型的转换, Object类型的转换在之后讨论

字符串类型转换

当我们需要字符串时, 就会自动进行转换, 也可以显式的调用 String(v) 转换

let v=true;
console.log(String(v)) // 由 true 变为了字符串 "true"  
console.log(String(null)) // 由 null 变为了字符串 "null"  

数字类型转换

在算术函数和表达式中,会自动进行 number 类型转换。

比如,用除法时 /:

console.log("6" / "2");  //3
//string 类型的值被自动转换成 number 类型后进行计算

也可以用 Number() 显示转换

let str = "123";
console.log(Number(str)); // 123
// 字符串 "123" 变成数字 123

如果该字符串不是数字, 会返回 NaN :

let age = Number("Not a Number");

alert(age); // NaN,转换失败

转换规则:

转换结果
undefinedNaN
null0
truefalse10
string去掉首尾空格后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN

注意 nullundefined 在这有点不同: null 变成数字 0, undefined 变成 NaN

布尔类型转换

  1. 直观上为“空”的值(如 0、空字符串("")、nullundefinedNaN)将变为 false
  2. 其他值变为 true
注意, "0" 字符串也是true, 有点容易掉坑, 但记住只要是非空的字符串都是true就行

tips

两个提醒:

  1. 四则运算 会自动将值转换成number类型。
  2. 加号,可以作为四则运算的加法运算符,也可以作为“连字符”,加号会优先选择连字符。

练习一下

//有字符串的加法,先将1转成"1"
"" + 1 + 0 = "10"

// 减法 使 "" 转成 0
"" - 1 + 0 = -1

// true 转成 1 , false 转成 0
true + false = 1

// 除法 "3" 转成 3
6 / "3" = 2

// 从左往右计算 先计算 4+5>>9 然后遇到后面的字符串 9转为 "9" 拼接成 "9px"
4 + 5 + "px" = "9px"

// "$4" + 5 
"$" + 4 + 5 = "$45"

"4px" - 2 = NaN

// 虽然可以转为-9 但它仍是字符串, 字符串相加
"  -9  " + 5 = "  -9  5"

// 转为数字, 会忽略前后空格
"  -9  " - 5 = -14

// null 转数字为0
null + 1 = 1

// undefined 转数字为NaN
undefined + 1 = NaN

//"\t \n"作为特殊字符,在这里也被当做了空格处理 最后被转换 只剩下空字符串被转为0
" \t \n" - 2 = -2 // (7)
最后修改:2022 年 05 月 08 日
如果觉得我的文章对你有用,请随意赞赏