正在检查一个字符串对一个好的风格?

时间:2011-12-01 11:34:02

标签: javascript

这些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
}

我会说第一个更好,因为它更明确(并且不会发生类型强制)。

4 个答案:

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