类型转换
有三种常用的类型转换:转换为 string 类型、转换为 number 类型和转换为 boolean 类型。
1.ToString —— 输出内容时转换发生,或通过 String(value) 进行显式转换。原始类型值的 string 类型转换通常是很明显的。
let value = true; alert(typeof value); // boolean value = String(value); // 现在,值是一个字符串形式的 "true" alert(typeof value); // string
2.ToNumber —— 进行算术操作时转换发生,或通过 Number(value) 进行显式转换。
ToNumber 转换遵循以下规则:
alert( "6" / "2" ); // 3, string 类型的值被转换成 number
//也可以使用 Number(value) 显式地将这个值转换为 number 类型。
let str = "123";
alert(typeof str); // string
let num = Number(str); // 变成 number 类型 123
alert(typeof num); // number
//如果字符串不是一个有效的数字,转换的结果会是 NaN,例如:
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN,转换失败

alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error reading a number at "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
加号’+’ 连接字符串
几乎所有的算术运算符都将值转换为数字,加号 + 是个例外。如果其中一个运算元是字符串,则另一个也会转换为字符串。
然后,连接两者:
alert( 1 + '2' ); // '12' (字符串在加号右边) alert( '1' + 2 ); // '12' (字符串在加号左边)
这仅仅发生在其中一方为字符串(译者注:或者双方都为字符串)的情况下。其他情况下会被转换为数字。
3.ToBoolean 遵循以下规则:ToBoolean —— 进行逻辑操作时转换发生。或通过 Boolean(value) 进行显式转换。
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
0 和只有空格的字符串(比如:" " )在进行 boolean 转换时变成 true。
- 假值,比如
0、空的字符串、null、undefined和NaN变成false。 - 其他值变成
true。
"" + 1 + 0 = "10" // (1) "" - 1 + 0 = -1 // (2) true + false = 1 6 / "3" = 2 "2" * "3" = 6 4 + 5 + "px" = "9px" "$" + 4 + 5 = "$45" "4" - 2 = 2 "4px" - 2 = NaN 7 / 0 = Infinity " -9\n" + 5 = " -9\n5" " -9\n" - 5 = -14 null + 1 = 1 // (3) undefined + 1 = NaN // (4)
- 字符串的加法
"" + 1会将1转换为一个字符串:"" + 1 = "1",然后我们得到了"1" + 0,再次应用同样的规则。 - 减法
-(就像大多数数学操作那样)只能用于数字,它会将空字符串""转换为0。 null经过数字化转换之后会变为0。undefined经过数字化转换之后会变为NaN。

浙公网安备 33010602011771号