2

タイトルについての質問が要約されています - これはコード例です:

!function() {
    console.log(this); // global object
}();

(function() {
    console.log(this); // global object
})();

() => {
    console.log(this); // {}
}();

var x = (function() {
    console.log(this); // global object
})();

アロー関数に関して、舞台裏で何が起こっているのでしょうか? 私が知る限り、ES5 でそのスコープが必要な場合は、次のように実行を空のオブジェクトにバインドする必要があります。

!function() {
    console.log(this); // global object
}.bind({})();
4

1 に答える 1

5

ES5 や ES6 とは関係ありません。アロー関数は常に外側の関数のコンテキストを取得します。使用しない関数呼び出し'use strict';は、常にグローバル オブジェクトをコンテキスト (たとえば、ブラウザーのウィンドウ) として取得します。使用するとundefined、デフォルトでコンテキストが使用されます。

これは、トピックを説明する非常に優れた記事です。

https://rainsoft.io/gentle-explanation-of-this-in-javascript/

于 2016-07-23T07:58:28.653 に答える