正在检查字符串是否符合数字的良好样式

Is checking a string against a number good style?

本文关键字:数字 样式 检查 字符串 是否      更新时间:2023-09-26

哪一个JS片段在风格方面更好?

var answer = Number(prompt('What is the value of 2 + 2?'));
if (answer === 4) {
    // do something
}

var answer = prompt('What is the value of 2 + 2?');
if (answer == 4) {
    // do something
}

我认为第一个更好,因为它更显式(并且不会发生类型强制转换)。

它们都是错误的,因为您应该使用parseInt(XX, 10)。记住,每次你使用==,耶稣就会杀死一只小狗。因此,始终使用===,因此:始终检查正确的类型

这取决于你想用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

当然是第一个,因为,正如你提到的,没有类型强制转换发生。但是你应该使用parseInt:

 var answer = parseInt((prompt('What is the value of 2 + 2?'), 10)) ;

最好是

<>之前var n = prompt(" 2 + 2的值是多少");n = parseInt(n, 10);//检查