以下Javascript语句返回什么以及为什么返回
What do the following Javascript statements return and why?
我正在学习JavaScript,有人问我这个问题,有人能帮忙吗?以下Javascript语句返回什么?为什么?
parseInt("07");parseInt("09");parseInt("010");
"1"+2+3;
"1"==1;"1"====1;"1"==true;"1"===false;
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 Developer Tools或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"被认为是truthy值。第四个当然会返回false,因为这一点。
- 为什么要返回'这'在导致循环的JavaScript原型中
- 解析-为什么user.getSessionToken()返回未定义的结果
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 为什么会返回触发器('点击')
- 为什么可以't我在谷歌浏览器中返回cookie
- 为什么当我在数组上测试regex时,它会返回false
- 为什么innerHTML返回“未定义”
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- 为什么我的get-requesttoserver.js返回离子云9上的实际文件
- sqlite查询返回错误-can'我不知道为什么
- 为什么返回'原因'来自被拒绝的jQueryAJAX调用theable
- 为什么这个array.filter总是不返回任何内容
- 为什么我的函数没有返回准确的计数
- 为什么document.getElementsByClassName(“className”)返回对象
- 为什么Math.pow(1,无穷大)返回NaN
- 为什么会赢't接收返回值
- 为什么不是't我的javascript向Project Euler返回正确答案's排名第一
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- 为什么我的on change事件在ie9上返回空
- 函数 parseInt (1/10000000) 返回 1.为什么