考慮下面的代碼:比較用戶輸入的號碼與領先的零
var a = 011;
ans = prompt("enter password", "");
if (a == ans) {
alert("done");
} else {
alert("false");
}
爲什麼console.log(a)
輸出9?
我應該輸入什麼作爲密碼到提示中,以調用?
考慮下面的代碼:比較用戶輸入的號碼與領先的零
var a = 011;
ans = prompt("enter password", "");
if (a == ans) {
alert("done");
} else {
alert("false");
}
爲什麼console.log(a)
輸出9?
我應該輸入什麼作爲密碼到提示中,以調用?
你會得到與parseInt("011", 8)
相同的結果。這是一個以0
開頭的整數字面量,被視爲octal
(請參閱the MDN on integer literals)。
刪除0
,你會沒事的。
如果你想要的是一個字符串,這裏是正確的文字:
var a = "011";
如果你不想八然後使它成爲一個字符串
var a = '011';
輸入,然後011會給你「完成'
0 =>
這意味着八進制,所以這就是爲什麼你得到警報錯誤;
var a = 011;
ans = prompt("enter password","");
if (a==ans){
alert("done");
}else{
alert("false")
}
var a = "011"
將提醒了done
;
從文檔:
- 如果輸入字符串以 「0x」 或 「0X」 開頭,基數是16 (十六進制)。
- 如果輸入字符串以「0」開頭,則基數爲八(八進制)。這個 功能是非標準的,有些實現故意做 不支持它(而不是使用基數10)。由於這個原因,當使用parseInt時,總是 指定一個基數。
- 如果輸入字符串以任何其他值開頭,則基數爲10(其中,十進制數爲)。
- 如果第一個字符無法轉換爲數字,parseInt 將返回NaN。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
甲的若干前導零意味着使用Javascript解釋爲八進制,即底座8 11八進制== 9(十進制)。 – James
011是9的十進制表示 – fcalderan
'a'由於'011'中的前導'0'而出現爲'9'。這是存儲在內存中作爲一個基地8號碼,在十進制是9。 – krillgar