类型转换
重要程度: 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
。