Javascript 如何使用变量名执行函数?
这是我的密码:Javascript 如何使用变量名执行函数?,javascript,jquery,Javascript,Jquery,这是我的密码: $(函数(){ 函数myfunc(){ 警报(“已执行”); } var function_name=“myfunc”; 窗口[函数名称](); }) 它仅适用于全局函数,因为作用域与窗口对象相同 您可以将函数分配给窗口对象的所需属性,就像分配给任何其他对象一样 函数myfunc(){ 警报(“已执行”); } $(函数(){ var function_name=“myfunc”; 窗口[函数名称](); window.foo=\u=>console.log('foo');
$(函数(){
函数myfunc(){
警报(“已执行”);
}
var function_name=“myfunc”;
窗口[函数名称]();
})
它仅适用于全局函数,因为作用域与窗口
对象相同
您可以将函数分配给窗口
对象的所需属性,就像分配给任何其他对象一样
函数myfunc(){
警报(“已执行”);
}
$(函数(){
var function_name=“myfunc”;
窗口[函数名称]();
window.foo=\u=>console.log('foo');
window.foo();
});代码>
函数未在全局范围内定义,因此它不是窗口对象的成员
可以像这样将函数附加到窗口对象
$(function(){
window.myfunc = function(){
alert("executed");
};
var function_name = "myfunc";
window[function_name]();
})
虽然您的问题的直接答案是您的函数没有定义为全局函数,因此,尝试将其作为窗口的属性调用失败,但将函数放入全局范围并不是一个好的答案
相反,将函数设置为用户定义对象的方法(可以放入您喜欢的任何范围),并将函数作为该对象的属性调用:
//立即调用的函数表达式(IIFE)
//使其所有内容不在全局范围内
(功能(){
设函数保持器={
someFunction:function(){console.log(“你做到了!”);}
};
//设置与函数同名的变量
让funcName=“someFunction”;
//通过对象调用函数
函数持有者[funcName]();
})()
对。非常感谢。是否有一种方法可以在$(function(){…})
中定义全局范围内的函数,但在技术上是正确的。使用全局范围通常是个坏主意。