2017-11-17 1 views
2
process.on('exit', function() { 
    console.log("Exiting normally") 
}) 

process.on('uncaughtException', function (err) { 
    console.log("Caught - " + err) 
}) 

[1,2,3,4,5].forEach(function(element) { 
    console.log("Loop " + element) 
}) 

これはで壊れる:私はセミコロンを追加するときに、それが動作するのに対しセミコロンを追加すると、このコードが機能するのはなぜですか?

Caught - TypeError: Cannot read property 'forEach' of undefined

Exiting normally

process.on('exit', function() { 
    console.log("Exiting normally") 
}) 

process.on('uncaughtException', function (err) { 
    console.log("Caught - " + err) 
}); // Added semi colon here 

[1,2,3,4,5].forEach(function(element) { 
    console.log("Loop " + element) 
}) 

これは私がちょうどすべてのステートメントの後にセミコロンを使用する必要があることを意味しています安全であるために?

+1

'process.on'は行終端子'} 'で終わらないため、自動セミコロンの挿入は行われません。 – gurvinder372

+1

JavaScriptは愚かであり、セミコロンで明示的にステートメントを閉じるまでは何も想定していないためです。これで、山括弧が前のステートメントの索引付けを前提としています。そして、はい、セミコロンを使用することはこれを止める良いことです。 –

+0

一般的には、ステートメントをセミコロンで終了する必要があります。 http://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript –

答えて

1

配列があり、配列を返したとします。

は、あなたがこの呼び出しを行うと言うことができます:

#do stuff 
returnArray(); 
[n].blah 
#do other stuff 
#this returns an array. say [1,2,3,4,5]; 
#and in the next line it does [n].blah 

は今、あなたはセミコロンなしで同じ呼び出しを行うと言うことができます

#do stuff 
returnArray() 
[n].blah 
#do stuff 
#this effectively does [1,2,3,4,5][n] 
#which is the nth index element of the returned array. 

これは、返される配列のn番目の指標を得るために似ていますこれは通常あなたがやろうとしていたものではありません。

0

セミコロンはJavaScript

process.on('',function (err) {..})[1,2,3,4,5].forEach(function(element) { 
    console.log("Loop " + element) 
}) 

はobliviously(process.on方法を以下にそれを考慮使用いけない)、なぜそれである[1,2,3,4,5]のような任意のプロパティを持っていませんが定義されていません

関連する問題