类型转换
重要程度: 5
下面这些表达式的结果是什么?
"" + 1 + 0 "" - 1 + 0 true + false 6 / "3" "2" * "3" 4 + 5 + "px" "$" + 4 + 5 "4" - 2 "4px" - 2 " -9 " + 5 " -9 " - 5 null + 1 undefined + 1 " \t \n" - 2
好好思考一下,把它们写下来然后和答案比较一下。
"" + 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 " -9 " + 5 = " -9 5" // (3) " -9 " - 5 = -14 // (4) null + 1 = 1 // (5) undefined + 1 = NaN // (6) " \t \n" - 2 = -2 // (7)
- 有字符串的加法
"" + 1
,首先会将数字1
转换为一个字符串:"" + 1 = "1"
,然后我们得到"1" + 0
,再次应用同样的规则得到最终的结果。 - 减法
-
(像大多数数学运算一样)只能用于数字,它会使空字符串""
转换为0
。 - 带字符串的加法会将数字
5
加到字符串之后。 - 减法始终将字符串转换为数字,因此它会使
" -9 "
转换为数字-9
(忽略了字符串首尾的空格)。 null
经过数字转换之后会变为0
。undefined
经过数字转换之后会变为NaN
。- 字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空格字符组成,包括
\t
、\n
以及它们之间的“常规”空格。因此,类似于空字符串,所以会变为0
。