在Javascript中,您可以创建并调用函数:
function test_1(){ console.log(1); }
window['test_1']() // --> 1
但是,我当前的代码是作用域:
(function(){
function test_1(){ console.log(1); }
window['test_1']() // --> not a function
})();
...使任何创建的函数不被绑定到窗口级别,而是绑定到特定的范围级别。
如何在范围内创建函数,然后动态*调用该函数?
*动态地表示我可以用变量动态改变字符串,例如窗口['测试_' +索引]()
答案 0 :(得分:1)
全局变量成为window
对象的属性。
非全局变量不会自动成为任何对象的属性。
你不能这样做。
考虑明确地将该函数作为对象的属性。
(function(){
var functions = {};
functions.test_1 = function test_1(){ console.log(1); };
functions['test_1']();
})();
答案 1 :(得分:-1)
要从范围内调用范围函数,只需按名称调用它(不要使用窗口):
(function(){
function test_1(){ console.log(1); }
test_1();
})();
要从作用域外部调用作用域函数,需要将其导出到调用作用域中:
var scope = (function(){
function test_1(){ console.log(1); }
return {
test_1: test_1
};
})();
scope.test_1();