Javascript 将字符串与数字进行核对是一种好的方式吗?
在风格方面,以下哪一个to-JS代码段更好Javascript 将字符串与数字进行核对是一种好的方式吗?,javascript,Javascript,在风格方面,以下哪一个to-JS代码段更好 var answer = Number(prompt('What is the value of 2 + 2?')); if (answer === 4) { // do something } vs 我认为第一个更好,因为它更显式(并且不会发生类型强制)。它们都是错误的,因为您应该为此使用parseInt(XX,10)。记住,每次你使用==时,耶稣都会杀死一只小狗。因此,始终使用==,因此:始终检查正确的类型。更好 var n = pro
var answer = Number(prompt('What is the value of 2 + 2?'));
if (answer === 4) {
// do something
}
vs
我认为第一个更好,因为它更显式(并且不会发生类型强制)。它们都是错误的,因为您应该为此使用
parseInt(XX,10)
。记住,每次你使用==
时,耶稣都会杀死一只小狗。因此,始终使用==
,因此:始终检查正确的类型。更好
var n = prompt("What is the value of 2 + 2?");
n = parseInt(n, 10);
//and check
var n=提示(“2+2的值是多少?”);
n=parseInt(n,10);
//检查
当然是第一个,因为正如您所提到的,没有发生类型强制
var answer = parseInt((prompt('What is the value of 2 + 2?'), 10)) ;
这取决于你想用
回答做什么。如果您只想进行比较,则无需转换类型:
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将允许不一定正确的答案parseInt(“4a”,10)
将返回4
,因此代码会认为“4a”
是正确的答案。为什么它比数字好?它们并不都是错的,都是对的-只是不一定适合所有情况。我更喜欢一元+运算符,但是Number()
通常是比parseInt()
更好的选择-除非您想忽略尾随的非数字字符或您不处理基数10。人们一直建议parseInt(n,10)
<代码>+n
是等效的且更短。深奥,但在JavaScript专业人士中很容易理解,你很快就会习惯。@Chris So,+n是否使用parseInt函数进行转换?不,实际上;在我看来,它所做的对这个案子来说更好。虽然parseInt('2,也许',10)
或parseInt('2.345',10)
都将返回2
,+'2,也许'
将返回NaN
,+'2.345'
将返回2.345
(因此,是一个数字,但不是整数)。+
一元运算符基本上调用Number
,而parseInt
获取第一个块(删除空格,标点符号拆分)并尝试将其作为整数(基数由基数参数指定,或猜测8、10或16-Number
将猜测10或16).对于triple equals,在提示符处输入的任何字符串都不会等于数字4,因此您最好说if(false)
。当然,对于这个特定的例子,整个要点是让“4”等于4,因此需要双等于,除非像第二个例子那样进行其他类型的转换?@nnnnnn在第一个例子中,我将字符串与字符串进行比较。关键是你并不总是需要做转换。如果您需要进行转换,因为您有一个数值变量要与答案
进行比较,这就是第二个代码片段的目的。+1我很抱歉,我承认我在这里完全错了。在发布我之前的每一条评论之前,我再次阅读了你的答案,但不知何故,我仍然将其与数字4而不是字符串“4”进行比较。我猜如果我在午夜后发帖睡觉,就会发生这种情况。。。
parseInt("4Hello World"); // 4
Number("4Hello World"); //NaN
+"4Hello World"; //NaN