2012-03-28 88 views
1

可能重复:
JavaScript BlockStatement confusion为什么{10 +'1'} + 10等于10?

为什么{10 + '1'} + 10等于10?

我猜测1不起作用,因为它在一个字符串中,但不知道其余的。

+3

我怀疑铸造对象为整数的产量为0,所以0 + 10 = 10.你期望会发生什么? – Matthew 2012-03-28 14:34:33

+0

但是{} + {} + 0'产生'NaN'得到lurv javascript <3 – 2012-03-28 14:35:51

+5

'{10 +'1'}'不是一个对象。 – 2012-03-28 14:36:09

回答

12

此:

{10 + '1'} 

是一个语句块。这不等于10;它有 没有任何价值,实际上 的值为“101”,一个字符串(学习一些无用的东西:-)。这不是一个特别的对象。

此:

​​

等于10

试试这个:

({10 + '1'}) + 10 

,你会看到一个差异。

+0

'({10 +'1'})+ 10' =>语法错误:-) – 2012-03-28 14:36:16

+2

是的,这就是我意思是:-)重点是解析器看到一个语句块,然后是另一个语句:表达式“+ 10”。该块是种不相关的。 – Pointy 2012-03-28 14:37:15

2

这是因为{}中的所有代码都被忽略。 {}中的代码是一个运行的表达式,然后忽略它的“值”。

因此{10 + '1'} + 10只是+10这就是10

0

你可能想什么做的是:

(10 + '1') + 10 

不要在数学使用{} - 使用()

+2

在“数学”中放弃字符串连接也许是一个好主意。 – pimvdb 2012-03-28 14:40:25

相关问题