2016-05-15 19 views
-1

ウィンドウオブジェクトにテスト関数が宣言されていないのはなぜですか? function test()以来のおかげWindowオブジェクトの文字列名から関数を呼び出す

!function(){ 
    function test(){ 
    console.log("testing"); 
    } 
    var check = window["test"] 
    console.log(check); //undefined 
}(); 
+1

'test'がウィンドウオブジェクトにないので、あなたは閉鎖を作成しました、それはポイントのようなものです... –

答えて

0

はトップレベル関数式のスコープに対してローカルである、それはwindow、グローバルスコープにバインドされていません。あなたはローカル変数としてそれを参照することができます。

!function() { 
    function test() { 
     console.log('testing') 
    } 
    console.log(test) 
}() 

またはグローバル変数のためwindowに直接バインドします

!function() { 
    window.test = function test() { 
     console.log('testing') 
    } 
    var check = window['test'] 
    console.log(check) 
}() 

あなたが変数としてローカルスコープにアクセスすることはできません - 詳細はthis questionを見ます。

関連する問題