为什么我需要parseInt()来避免NaN?

时间:2012-11-26 06:41:32

标签: javascript parseint

我有一个包含2个值的2D数组,我想用一条小信息打印差异。

var array = [[0,2],[3,4]];
console.log(array[0][1]-array[0][0]) //prints '2'
console.log(array[0][1]-array[0][0] + ' is the number') //prints '2 is the number'
console.log('The number is' + array[0][1]-array[0][0]) //prints 'NaN'
console.log('The number is ' + parseInt(array[0][1]-array[0][0], 10)) //prints 'The number is 2'

为什么我需要在此parseInt()之前在结果之前打印消息,但是在结果之后打印文本,或者仅在结果上打印结果,是A-OK?

2 个答案:

答案 0 :(得分:7)

实际上,parseInt没有任何区别。它将减法放在重要的括号中。

您的代码基本上是说:

"The number is" + array[0][1]-array[0][0]
// becomes...
"The number is 2"-array[0][0]
// is cast to...
parseInt("The number is 2")-array[0][0];
// which is...
NaN-0
// or just...
NaN

这都是关于操作的顺序。

答案 1 :(得分:0)

这是因为JavaScript从左到右遵循数学顺序。由于您从一个字符串开始,它假定您正在连接字符串。