■関数リテラルとFunctionコンストラクタにおけるスコープの違い 前回、関数を定義する構文として「関数リテラル」と「Functionコンストラクタ」について紹介した。 関数リテラル、Functionコンストラクタは構文的な違いこそあるものの、いずれも匿名関数を定義するという意味でほぼ同様の機能を提供する。ただし、関数内で入れ子に関数リテラル/Functionコンストラクタを使用した場合には、スコープの解釈が互いに異なる点に要注意。 以下に、具体的なコード例を挙げてみよう。 var num = 0; function scope() { var num = 1; // Functionコンストラクタ var myScope1 = new Function("", "window.alert(num);"); // 関数リテラル var myScope2 = function() { wi
