【JS】テストコード書き書きしながら関数の勉強3
引き続き下記の本を読んでの感想です!
- 作者: Christian Johansen,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2011/11/25
- メディア: 大型本
- 購入: 19人 クリック: 331回
- この商品を含むブログを見る
|javascript| window.alert('アラート'); alert('アラート'); ||< 上の2行のコードは同様。しかもブラウザは自身の情報であるwindowプロパティを持っている。そのため |javascript| var global = this; test("GlobalObjectTest", 3, function(){ // トップレベルのthisとwindowは同じ deepEqual(global, window, 'global == window'); // トップレベルのthisのプロパティwindowとwindowは同じ deepEqual(global.window, window, 'global.window == window'); // windowのプロパティwindowとwindowは同じ deepEqual(window.window, window, 'window.window == window'); }); ||< window.windowなんて呼び出しでもアクセスできる。
*** 5.3.5スコープチェーン スコープチェーンのことはよくわからなかったのですが、 もし自身のプロパティにその名前がなければ上のスコープまで探しに行くという意味のようです。 実際グローバル変数がどこからでも見えるのは、スコープチェーンでトップレベルまで見に行くからです。 それよりも以下のサンプルソースではクロージャのほうが驚きでした。 クロージャに関してはまたどこかでやりましょう!
|javascript| test("test_chain", function () { var inc = adder(1); var dec = adder(-1);
// inc、decは関数で、自身でbaseの情報を保存している。 equal(inc(2), 3, "inc(2) equals 3"); equal(dec(4), 3, "dec(4) equals 3"); equal(dec(inc(3)), 3, "dec(inc(3)) equals 3"); }); ||<