将用户输入与带前导零的数字进行比较
Comparing user input to a number with leading zero
考虑以下代码:
var a = 011;
ans = prompt("enter password", "");
if (a == ans) {
alert("done");
} else {
alert("false");
}
为什么console.log(a)
输出9?
我应该在提示中输入什么作为密码才能呼叫 alert("done");
?
开头的0
表示JavaScript中的八进制。
你会得到与 parseInt("011", 8)
相同的结果。那是以 0
开头的整数文字被视为 octal
(参见 the MDN on integer literals)。
删除 0
就可以了。
如果您想要的是字符串,这是正确的文字:
var a = "011";
如果您不需要八进制,则将其设为字符串
var a = '011';
输入 011 会给你 'Done'
0 =>
这意味着八进制,所以这就是为什么您收到错误警报;
var a = 011;
ans = prompt("enter password","");
if (a==ans){
alert("done");
}else{
alert("false")
}
var a = "011"
将发出警报 done
;
来自文档:
- If the input string begins with "0x" or "0X", radix is 16
(hexadecimal).
- If the input string begins with "0", radix is eight (octal). This
feature is non-standard, and some implementations deliberately do
not support it (instead using the radix 10). For this reason always
specify a radix when using parseInt.
- If the input string begins with any other value, the radix is 10
(decimal).
- If the first character cannot be converted to a number, parseInt
returns NaN.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
考虑以下代码:
var a = 011;
ans = prompt("enter password", "");
if (a == ans) {
alert("done");
} else {
alert("false");
}
为什么console.log(a)
输出9?
我应该在提示中输入什么作为密码才能呼叫 alert("done");
?
开头的0
表示JavaScript中的八进制。
你会得到与 parseInt("011", 8)
相同的结果。那是以 0
开头的整数文字被视为 octal
(参见 the MDN on integer literals)。
删除 0
就可以了。
如果您想要的是字符串,这是正确的文字:
var a = "011";
如果您不需要八进制,则将其设为字符串
var a = '011';
输入 011 会给你 'Done'
0 =>
这意味着八进制,所以这就是为什么您收到错误警报;
var a = 011;
ans = prompt("enter password","");
if (a==ans){
alert("done");
}else{
alert("false")
}
var a = "011"
将发出警报 done
;
来自文档:
- If the input string begins with "0x" or "0X", radix is 16 (hexadecimal).
- If the input string begins with "0", radix is eight (octal). This feature is non-standard, and some implementations deliberately do not support it (instead using the radix 10). For this reason always specify a radix when using parseInt.
- If the input string begins with any other value, the radix is 10 (decimal).
- If the first character cannot be converted to a number, parseInt returns NaN.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt