JavaScriptのthisについてメモ

仕様を解説した記事を読んで

以下のJavaScriptの仕様に関する記事を読んでみますと、結構、勉強になることがあります。

JavaScript の this キーワードに結びつけられる値はどのように決定されるのか (言語仕様の説明)」

http://vividcode.hatenablog.com/entry/js/this-keyword-spec

気になったこと

以前私が書いたメモ(注1)では、次のようなサンプルを書いて説明していました。

 var f = function(){
         this.n = 12;
     };
 /*関数呼び出しパターン ( this = グローバルオブジェクト )*/
  f();
  window.n;  /* 12 */

  /*即時関数 ( this = グローバルオブジェクト )*/
  (function(){
    this;    /* グローバルオブジェクト */
  })();

確かに、ブラウザのOpera12.13でチェックした限りでは、windowオブジェクトを返します。
これは、Function Call (注2)により、thisValue が undefinedになった結果、JavaScriptの仕様の「thisArg がnull か undefined であれば、ThisBinding にはグローバルオブジェクトがセットされる」(注3)が適用されたとみなしてもいいものかどうか迷っています。
少し、調査の必要がありそうです。

追記 (2月27日)

コメントでnobuoka さんから教えていただきました。「ThisBinding にグローバルオブジェクトがセットされているという理解でよいはず」だそうです。

注1「thisの遅延束縛 - JavaScriptの個人的なメモ (その3)」より引用

http://d.hatena.ne.jp/dhrname/20121026

注2 Function Call

ECMA-262 5.1th の 11.2.3より

注3 thisArg が null か

ECMA-262 5.1th の 10.4.3.2の訳文、
http://vividcode.hatenablog.com/entry/js/this-keyword-specより引用