2016-05-15 58 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了解更多详情。

相关问题