1

私はいくつかのプラグインを使用して作成する方法を研究してangularjsおり、そのうちのいくつかではこれに直面しました:

(function() {
    'use strict'
    //code...
}).call(window);

以下のような自己呼び出し関数を使用することとの違いは何ですか?

(function() {
    'use strict'
    //code...
})();
4

1 に答える 1

2

2 つの呼び出しの値は異なりthisます。

このコード

(function() {
    'use strict'
    console.log(this)
})();

undefined厳密モード関数のメソッド以外の直接呼び出しでは のthis値が使用されるため、ログに記録されますundefined

このコード

(function() {
    'use strict'
    console.log(this)
}).call(window);

windowの最初の引数は、呼び出される関数にcall提供するために使用されるため、ログに記録されます。this

推測する必要がある場合、これは、裸の非メソッド呼び出しのfor window(の代わりにundefined) を使用するという非厳密な動作を模倣するために行われていると言えます。あなたが意味する場合はthis単に使用してください。windowwindow

于 2018-04-19T16:39:45.570 に答える