我正在学习 JavaScript 并被问到这个问题,有人可以帮忙吗?以下 Javascript 语句返回什么,为什么?
parseInt("07"); parseInt("09"); parseInt("010");
“1”+2+3;
“1” == 1;“1” === 1;“1” == 真;“1” === 假;
我正在学习 JavaScript 并被问到这个问题,有人可以帮忙吗?以下 Javascript 语句返回什么,为什么?
parseInt("07"); parseInt("09"); parseInt("010");
“1”+2+3;
“1” == 1;“1” === 1;“1” == 真;“1” === 假;
parseInt("07"); parseInt("09"); parseInt("010");
7,
0, (invalid)
8
分别。这是因为前面的 0 指定了八进制数。八进制数只能包含 0-7 的字符。9 无效。
"1" + 2 + 3;
123(字符串)
"1" == 1; "1" === 1; "1" == true; "1" === false;
true
false
true
false
启动一个开发控制台(如 Chrome 开发者工具或 Firebug 中的那个)并输入语句,你会得到结果:
parseInt('07'); -> 7
parseInt('09'); -> 0
parseInt('010'); -> 8
发生这种情况是因为 parseInt 试图确定您传递的字符串中包含的数字的正确基数。这些数字从 0 开始,因此 JavaScript 假定您传递的是“八进制”值。例如 09 在那里不存在,因此它返回 0。您可以通过将第二个参数传递给 parseInt(称为“基数”)轻松解决此问题
所以,如果你想要十进制数字,大多数情况下都是这样,你写:
parseInt('09', 10);
"1" + 2 + 3;
将返回字符串“123”,因为 JavaScript 在后台自动转换类型。将数字添加到字符串只会转换它们并将它们连接起来。
"1" == 1; "1" === 1; "1" == true; "1" === false;
在这里,我们有两个不同的运算符进行比较。==
将只比较值,===
将比较值和类型。在大多数情况下使用它被认为是一种很好的做法===
,除非您真的确定要使用==
.
您的第一条语句将返回 true,类型在后台转换并且值相同,您的第二条语句将返回 false,因为类型未转换并且您正在比较 String 和 Number。第三个将返回 true,因为“1”被认为是真实值。因为这个,第四个当然会返回 false。