1

我有一个包含 2 个值的二维数组,我想用一点信息打印差异。

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?

4

2 回答 2

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

这都是关于操作顺序的。

于 2012-11-26T06:44:05.857 回答
0

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

于 2012-11-26T06:45:32.347 回答