以下Javascript语句返回什么以及为什么?

时间:2012-02-16 14:31:22

标签: javascript return statements

我正在学习JavaScript并被问到这个问题,有人可以帮忙吗?以下Javascript语句返回什么以及为什么?

parseInt函数( “07”); parseInt函数( “09”); parseInt函数( “010”);

“1”+ 2 + 3;

“1”== 1; “1”=== 1; “1”== true; “1”=== false;

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

启动开发控制台(如Chrome开发者工具或Firebug中的控制台)并输入语句,您将获得结果:

parseInt('07'); -> 7
parseInt('09'); -> 0
parseInt('010'); -> 8

这种情况会发生,因为parseInt会尝试确定您传递的字符串中包含的数字的正确基数。这些数字从0开始,因此JavaScript假设您传递的是“八进制” - 值。例如09在那里不存在,所以它返回0。 您可以通过将第二个参数传递给parseInt(称为“radix”)

来轻松解决此问题

所以,如果你想要十进制数,大多数情况都是如此,你写:

parseInt('09', 10);


"1" + 2 + 3;

将返回字符串“123”,因为JavaScript会在后台自动转换类型。在字符串中添加数字只会转换它们并将它们连接起来。

"1" == 1; "1" === 1; "1" == true; "1" === false;

这里我们有两个不同的运算符进行比较。 ==只会比较值,===会比较值和类型。在大多数情况下使用===被认为是一种很好的做法,除非您确定要使用==

您的第一个语句将返回true,类型在后台转换并且值相同,您的第二个语句将返回false,因为类型未转换且您正在将String与Number进行比较。第三个将返回true,因为“1”被认为是真正的价值。由于这个原因,第四个当然会返回错误。