2016-05-15 57 views
-1

爲什麼在窗口對象中找不到測試功能聲明?由於從Window對象的字符串名稱調用函數

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

因爲'test'不在窗口對象中?你已經創建了一個閉包,這有點... –

回答

0

由於function test()是當地的頂級函數表達式的範圍,這不是必然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瞭解更多詳情。

相關問題