JavaScript

じゃあ this の抜き打ちテストやるぞー

More than 5 years have passed since last update.

JavaScriptのthisの覚え方JavaScriptの「this」は「4つ」だけ!の授業でやったから、this はみんなばっちりだよな。じゃあ今から抜き打ちテストするぞー。まだ読んでないひとは先に上の記事を読んどくといいと思うけど、腕に自信のある人はすぐに回答を始めても構わないぞ。赤点とった奴は、今日の放課後補習だからなー。

【注意】 問題 18 ~20 について、カンマ演算子 を知らないから解けなかった、という人が結構いるみたいです。本問はカンマ演算子の知識を問うものではなく、あくまで this の振る舞いについての理解を試すものなので、本来の題意を損なわないように当該の問題は改題しました。改題後も正答とその根拠は変わりません。

得点 評価
0 ~ 5 テスト中に寝るんじゃない
6 ~ 11 鉛筆転がしのほうがマシ
12 ~ 15 平凡な一般市民
16 ~ 19 10 人に一人の逸材
20 ~ 21 this の世界的権威
22 あなたが神か

問 以下の JavaScript プログラムをウェブブラウザ上で実行したとき、true が出力されるものには ○ 、そうでないものには × をつけよ。(各1点)

1

console.log(this === window);

答え

2

'use strict';
console.log(this === window);

答え

3

function hoge(){
    console.log(this === window);
}

hoge();

答え

4

var piyo = { 
    hoge: function(){
        console.log(this === window);
    } 
};

piyo.hoge();

答え

5

function Hoge(){
    console.log(this === window);
}    

new Hoge();

答え

6

var hoge = {
    Hoge: function(){
        console.log(this === window);
    }    
};

new hoge.Hoge();

答え

7

console.log((function(){ return this; })() === window);

答え

8

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

答え

9

function hoge(){
    console.log(this === window);
}

hoge.apply(window);

答え

10

function hoge(){
    console.log(this === window);
}

hoge.apply(42);

答え

11

function hoge(){
    console.log(this === window);
}

hoge.apply();

答え

12

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

hoge.apply();    

答え

13

function hoge(){
    console.log(this === window);
}

hoge.apply(undefined, []);

答え

14

console.log(eval('this') === window);

答え

15

'use strict';
console.log(eval('this') === window);

答え

16

(function(){
    console.log(eval('this') === window);
})();

答え

17

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

答え

18

var _eval = eval;
console.log(_eval('this') === window);

答え ( 改題前の問題と答え )

19

'use strict';
var _eval = eval;
console.log(_eval('this') === window); 

答え ( 改題前の問題と答え )

20

'use strict';
(function(){
    var _eval = eval;
    console.log(_eval('this') === window); 
})();

答え ( 改題前の問題と答え )

21

console.log(new Function('return this')() === window);

答え

22

'use strict';
console.log(new Function('return this')() === window);    

答え