javascriptの関数(オブジェクト)について疑問があります。
私は次のような2つのコードを持っています
var a= function(){
console.log('abc')
}
と
var a= (function(){
console.log('abc')
})
これら2つの違いは何ですか>>
ありがとう:)
javascriptの関数(オブジェクト)について疑問があります。
私は次のような2つのコードを持っています
var a= function(){
console.log('abc')
}
と
var a= (function(){
console.log('abc')
})
これら2つの違いは何ですか>>
ありがとう:)
現在は違いはありませんが、2番目の関数の後に別の括弧()を追加すると、呼び出しなしで関数が実行されます。
var a= (function(){
console.log('abc')
})()
'abc'をすぐに出力します
違いはありません。関数式があり、式を括弧で囲むことができます。
ちょうどこれと同じように:
a = 42;
これと同じです:
a = (42);
この:
a = (((((42)))));
実用的な違いはありません。これらは両方とも、に割り当てられる無名関数になりa
ます。
1つ目は「簡単な割り当て」です。2番目の例では、括弧は「グループ化演算子」として機能し、次の1つのことを行います。
プロダクションPrimaryExpression:(Expression)は次のように評価されます。
- 式の評価結果を返します。これは、タイプが参照である可能性があります。
a
したがって、グループ化演算子は、最初の例のように、それに含まれる関数を返し、に割り当てます。
違いがあります。
(および)はグループ化を構成します。グループ化には式のみを含めることができるため、その中の関数は式であり、宣言ではありません。
ECMAは、関数宣言には常に関数名が必要であり、関数式ではそれを省略できると指定しているため、次のことが可能になります。
(function() {});
次の宣言は無効ですが
function() {};
それほど頻繁には関係ありませんが、それでも...詳細については、この詳細な記事をお読みください:http: //kangax.github.com/nfe/
すでに述べたように、あなたが与えた2つの例は本質的に同じです。
この質問には、括弧の使用法に関する回答に含まれているより多くの情報が含まれています。時間をかけて検討する価値があるかもしれません。