次の 2 つのコード例の違いは何ですか。
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
と
var myFunc = (function(){
//do something
})();
次の 2 つのコード例の違いは何ですか。
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
と
var myFunc = (function(){
//do something
})();
myFunc
2つの方法は非常に似ていますが、グローバル変数の作成方法にわずかな違いがあります。
2番目の方法では、var
ステートメントを使用して、myFunc
変数をグローバルオブジェクトの削除不可能なプロパティとして作成し、varステートメントは内部{DontDelete}
属性を明示的に設定します。例:
var myFunc = (function(){
//do something
})();
delete window.myFunc; // false
最初のものは削除できますが:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
//...
delete window.myFunc; // true
上記をFirebugで試してみると、両方を削除できます。これは、Firebugがeval
コンソールでコード評価()を使用しているためです。
上記の例はここで確認できます。
おすすめ記事:
意味的には何もありません。ただし、最初の例では、コードを読みやすくする「プライベート」関数を使用できます。
この例を見てください:
(function(){
var helperFunc = function()
{
//do something else
}
var myFunc = function(){
//do something
helperFunc();
}
window.myFunc = myFunc;
})();
よりクリーンなコードは、優れた開発者の手に渡ります