1

次の 2 つのコード例の違いは何ですか。

(function(){
    var myFunc = (function(){
        //do something
    })();
    window.myFunc = myFunc;
})();

var myFunc = (function(){
    //do something
})();
4

2 に答える 2

3

myFunc2つの方法は非常に似ていますが、グローバル変数の作成方法にわずかな違いがあります。

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コンソールでコード評価()を使用しているためです。

上記の例はここで確認できます。

おすすめ記事:

于 2010-03-10T21:57:05.587 に答える
0

意味的には何もありません。ただし、最初の例では、コードを読みやすくする「プライベート」関数を使用できます。

この例を見てください:

(function(){
    var helperFunc = function()
    {
        //do something else
    }
    var myFunc = function(){
        //do something
        helperFunc();
    }
    window.myFunc = myFunc;
})();

よりクリーンなコードは、優れた開発者の手に渡ります

于 2010-03-10T21:59:45.323 に答える