すぐに呼び出すことができるのは関数式だけです。
(function () {
var x = "Hello!!"; // I will invoke myself
})();
しかし、関数宣言ではありませんか? これは、関数宣言が巻き上げられ、すでにすぐに実行されているためですか?
編集:私が参照しているリソース
http://benalman.com/news/2010/11/immediately-invoked-function-expression/
すぐに呼び出すことができるのは関数式だけです。
(function () {
var x = "Hello!!"; // I will invoke myself
})();
しかし、関数宣言ではありませんか? これは、関数宣言が巻き上げられ、すでにすぐに実行されているためですか?
編集:私が参照しているリソース
http://benalman.com/news/2010/11/immediately-invoked-function-expression/
混乱を解消するには
関数宣言とは
// this is function declaration
function foo(){
// code here
}
また
//this is ok, but without name, how would you refer and use it
function (){
// code here
}
すぐに呼び出すには、これを行います
function foo(){
// code here
}()
関数式とは
// this is a function expression
var a = function foo(){
// code here
};
また
var a = function (){
// code here
};
2 番目のケースでは、無名関数を作成しました。変数を介して関数への参照がまだ残っているため、a
実行できますa()
。
関数式の呼び出し
var a = (function (){
// code here
}());
変数 a は関数の結果とともに格納され (関数から戻った場合)、関数への参照が失われます。
どちらの場合も、すぐに関数を呼び出すことができますが、上記のように結果が異なります。
正確な意味がわからない-示した方法で関数宣言を実行しても、すぐに実行されます
(function declaredFn(){
document.getElementById('result').innerHTML='executed';
}());
<div id="result"></div>