2012-03-28 9 views
1

可能性の重複:
JavaScript BlockStatement confusionなぜ{10 + '1}} + 10が10に等しいのですか?

なぜ{10 + '1'} + 10等しい10ですか?

私は1が文字列であるために動作しないと推測していますが、残りはわかりません。

+3

私は=そう0 + 10、整数利回り0にオブジェクトをキャスト疑い10.何が起こると思いますか? – Matthew

+0

'{} + {} + 0'は' NaN'のjavascriptを返す<3 –

+5

'{10 + '1'}'はオブジェクトではありません。 –

答えて

12

この:

{10 + '1'} 

は、文ブロックです。それは10に等しくない。 実際には値がありません 値 "101"、文字列(毎日役に立たない何かを学ぶ:-)。特にオブジェクトではありません。

は、この:

({10 + '1'}) + 10 

、あなたは違いが表示されます:

​​

これを試してみてください10.

に等しいです。

+0

'({10 + '1}} + 10' =>構文エラー:-) –

+2

はい、そうです意味は:-)要点は、パーサーが文ブロックを見ており、別の文、つまり式「+ 10」を見ているということです。ブロックは一種のものではありません。 – Pointy

2

これは、{}内のすべてのコードが無視されるためです。 {}のコードは実行された式であり、その「値」は無視されます。

従って{10 + '1'} + 10+10であり、これは10です。

0

あなたはおそらくやりたいことは次のとおりです。

(10 + '1') + 10 

は数学で} {使用しないでください - 使用()

+2

文字列の連結も "数学"で放棄することをお勧めします。 – pimvdb

関連する問題