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

calling a function from its string name on Window object

为什么在 window 对象中找不到测试函数声明?谢谢

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

因为 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