Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用变量名执行函数?_Javascript_Jquery - Fatal编程技术网

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(){…})
中定义全局范围内的函数,但在技术上是正确的。使用全局范围通常是个坏主意。