请考虑以下代码:
var a = 011;
ans = prompt("enter password", "");
if (a == ans) {
alert("done");
} else {
alert("false");
}
为什么console.log(a)
输出9?
我应该在提示{@ 1}}中输入什么密码作为密码?
答案 0 :(得分:4)
parseInt("011", 8)
会得到相同的结果。这是一个以0
开头的整数文字,被视为octal
(参见the MDN on integer literals)。
删除0
,你会没事的。
如果你想要的是一个字符串,这是正确的文字:
var a = "011";
答案 1 :(得分:3)
前导0
表示JavaScript中的八进制。
答案 2 :(得分:1)
如果你不想要八进制,那就把它变成一个字符串
var a = '011';
输入011将为您提供'完成'
答案 3 :(得分:1)
0 =>
这意味着八进制,这就是为什么你得到警告错误的原因;
var a = 011;
ans = prompt("enter password","");
if (a==ans){
alert("done");
}else{
alert("false")
}
var a = "011"
会提醒done
;
来自文档:
- 如果输入字符串以" 0x&#34开头;或" 0X",基数为16 (十六进制)。
- 如果输入字符串以" 0"开头,则基数为8(八进制)。这个 功能是非标准的,有些实现是故意做的 不支持它(而是使用基数10)。因此总是如此 使用parseInt时指定基数。
- 如果输入字符串以任何其他值开头,则基数为10 (十进制)。
- 如果第一个字符无法转换为数字,则为parseInt 返回NaN。
醇>
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt