-1
var chapter = {
    num: 7,
    title: ‘Creating Functions’,
    getNum: function() { return num; }\\without this keyword
};

出力は、キーワード this なしでは未定義です

var chapter = {
    num: 7,
    title: ‘Creating Functions’,
    getNum: function() { return this.num; }\\with this keyword
};

なぜこのキーワードが必要なのか、簡単に説明してください。これは質問が繰り返されることは知っていますが、彼ら全員が決して満足していないのを見ました。よろしくお願いします....

もう 1 つ、このコードが実際に行っていることについて説明します。

(function() {
    // Function body goes here.
})();

すぐに呼び出される関数については少し知っていますが、詳細な説明が必要です。よろしくお願いします

4

2 に答える 2

2

num現在のスコープ内変数です (関数が定義されている場所によって決まります)。num

this.num現在のコンテキストプロパティです (関数の 呼び出し方法によって決まります)。num

すぐに関数を呼び出しましたが、詳細な説明が必要です

JavaScript のスコープは関数によって決まります。すぐに呼び出される関数は新しいスコープを作成し、現在のスコープに余分な変数を追加しないようにするために使用されます。

于 2013-01-30T11:45:36.780 に答える
0

あなたの質問の最後の部分に答えるために:その「トリック」はクロージャーと呼ばれます。

最初に:(...)()最初の括弧のセット内に何かを作成し、その結果を呼び出します。の代わりに関数を配置する...と、その関数が呼び出されます。

誰かがこれを行う理由は、グローバル スコープを汚染することなく、あらゆる種類のものを定義できるスコープを作成することです (var myVar = 1;どこかに配置するだけで、変数がグローバル スコープに割り当てられます。クロージャー内では、すべてを自由に作成できます。グローバルスコープを他のスクリプトの混乱に変えることなく、必要な混乱を引き起こします。

于 2013-01-30T11:50:45.593 に答える