这些JS片段中的哪一个在样式方面更好?
var answer = Number(prompt('What is the value of 2 + 2?'));
if (answer === 4) {
// do something
}
VS
var answer = prompt('What is the value of 2 + 2?');
if (answer == 4) {
// do something
}
我会说第一个更好,因为它更明确(并且不会发生类型强制)。
答案 0 :(得分:4)
他们都错了,因为你应该使用parseInt(XX, 10)
。请记住,每次使用==
耶稣都会杀死一只小狗。所以总是使用===
,因此:始终检查正确的类型。
答案 1 :(得分:2)
这取决于您对answer
的要求。如果你想做的唯一事情是比较它,你不需要转换类型:
var answer = prompt('What is the value of 2 + 2?');
if (answer === "4") {
// do something
}
如果您希望最后得到一个数字进行比较然后进一步处理,Number
或一元加运算符+
会将输出字符串转换为数值,或NaN
如果它不是有效的基数10。
var answer = +prompt('What is the value of 2 + 2?');
if (answer === 4) {
// do something
}
parseInt(x, 10)
和Number(x)
之间存在差异 - 前者将忽略最后的非数字字符。
parseInt("4Hello World"); // 4
Number("4Hello World"); //NaN
+"4Hello World"; //NaN
答案 2 :(得分:1)
当然第一个,因为正如你所提到的,没有类型强制发生。但你应该使用parseInt:
var answer = parseInt((prompt('What is the value of 2 + 2?'), 10)) ;
答案 3 :(得分:0)
最好是
var n = prompt("What is the value of 2 + 2?"); n = parseInt(n, 10); //and check