从Window对象上的字符串名称调用函数

时间:2016-05-15 17:25:54

标签: javascript window-object

为什么在窗口对象中找不到测试功能声明?感谢

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

1 个答案:

答案 0 :(得分: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