可能性のある複製:
JavaScript:var functionName = function(){} vs function functionName(){}
JavaScriptで関数を宣言
JavaScriptで関数を定義するための2つの異なる構文を見てきました。
function f() {
...
}
と同様
var f = function() {
...
};
これらの違いは何ですか?それらの1つは非推奨ですか?
どちらも非推奨ではなく、両方とも機能します。ここでの違いは、一方が名前付き関数(function f()
)であり、もう一方が関数に等しい変数(var f = function()
)であることです。
関数と等しい変数を設定するときは注意する必要があります。これは動作します:
var f = function(n) { console.log(n); };
f(3); // logs 3
しかし、変数の呼び出し後に変数が定義されているため、これは壊れます。
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
ただし、通常の機能は正常に機能します。
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
これは、実行前にコードが分析され、すべての関数を呼び出すことができるためです。ただし、varを関数に設定することは、varを他の値に設定するようなものです。発生する順序は重要です。
さらに混乱を招くものについては...
「自己実行」匿名関数もあります。彼らはさまざまな名前で行きます。最も一般的な方法は次のようになります。
(function() {
// code in here will execute right away
// since the () at the end executes this (function(){})
})();
間違いなくより良いバージョンもあります。
!function() {
// again, the tailing () will execute this
}();
匿名関数の詳細については、 このStack Overflow post をご覧ください。