2016-09-19 11 views
0

Javascriptに関する奇妙なことがありました。例えば、ノード・シェル(ノードを入力するだけで)を実行すると、理解できない文がいくつかあります。Javascript型。フードの仕組みを理解しようとしています

> [] + [] 
    ''       (because [] is converted to an empty string ?) 
    > {} + [] 
    0       (why 0 ?) 
    > x = ['10', '10', '10']  (this is ok) 
    ['10', '10', '10'] 
    > x.map(parseInt) 
    [ 10, NaN, 2 ]    (really weird) 

私は(特に最後の1)Javascriptが私はそれらの結果を取得理由を理解するためにボンネットの下にどのように動作するかを知ること

+3

最後の例は、「難解な使用例」セクションの 'map()'のmdnドキュメントに記載されています。https://developer.mozilla.org/en-US/docs/ Web/JavaScript/Reference/Global_Objects/Array/mapを参照してください。要約すると、問題はオプションの関数パラメータから発生します。 – httpNick

+0

ECMAScript仕様は、どのように動作するように設計されているかを知りたい場合に使用します。今、これはよくある質問の蓄積です。 –

答えて

4

をしたいと思います。これは、すでに何回も回答されている、ここで何が起こっているのかを簡単に概要を示しますon:

> [] + [] 
    = String([]) + String([]) 
    = [].join() + [].join() 
    = '' + '' 

> {} + [] 
    = {/*empty block */}; +[] 
    = Number([]) 
    = Number(String([])) 
    = Number('') 
    = 0 

> x = ['30', '20', '10'] 
> x.map(parseInt) 
    = [ 
     parseInt('30', 0), 
     parseInt('20', 1), 
     parseInt('10', 2) 
    ] 
    = [10, NaN, 2] 
関連する問題