将用户输入与前导零的数字进行比较

时间:2016-01-11 13:00:56

标签: javascript leading-zero

请考虑以下代码:

var a = 011;

ans = prompt("enter password", "");

if (a == ans) {
   alert("done");
} else {
   alert("false");
}

为什么console.log(a)输出9?

我应该在提示{@ 1}}中输入什么密码作为密码?

4 个答案:

答案 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;

来自文档:

  
      
  1. 如果输入字符串以" 0x&#34开头;或" 0X",基数为16   (十六进制)。
  2.   
  3. 如果输入字符串以" 0"开头,则基数为8(八进制)。这个   功能是非标准的,有些实现是故意做的   不支持它(而是使用基数10)。因此总是如此   使用parseInt时指定基数。
  4.   
  5. 如果输入字符串以任何其他值开头,则基数为10   (十进制)。
  6.   
  7. 如果第一个字符无法转换为数字,则为parseInt   返回NaN。
  8.   

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt