Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 - Fatal编程技术网

Javascript 是否可以在不使用外壳的情况下将变量设置为函数?

Javascript 是否可以在不使用外壳的情况下将变量设置为函数?,javascript,Javascript,在JavaScript中,可以将变量设置为如下方法: variable = function () { alert("My name is bob"); }; function SayMyName() { alert("My name is bob"); } variable = SayMyName; 或者像这样: variable = function () { alert("My name is bob"); }; function SayMyName() { alert(

在JavaScript中,可以将变量设置为如下方法:

variable = function () { alert("My name is bob"); };
function SayMyName() {
   alert("My name is bob");
}
variable = SayMyName;
或者像这样:

variable = function () { alert("My name is bob"); };
function SayMyName() {
   alert("My name is bob");
}
variable = SayMyName;
您还可以使用如下参数将函数括起来:

function SayMyName(name) {
   alert("My name is "+ name);
}
variable = function () { SayMyName("bob"); };
但尝试以下方式存储变量将调用函数,而不是将其存储为变量:

function SayMyName(name) {
   alert("My name is "+ name);
}
variable = SayMyName("bob");
使用[callee][1]有一种巧妙的方法可以解决这个问题,但是callee被贬低了,在大多数现代浏览器上都不起作用


有没有办法在不使用附件的情况下将变量设置为具有参数的函数?

您不能为此使用嵌套匿名函数吗

var variable = function(name) {
  return function() {
    alert('My name is ' + name);
  };
};
调用它会产生您想要的结果:

var test = variable('bob');
test(); // Alerts "My name is bob"

您可以返回一个函数,如:

function SayMyName(x) { return function() { alert("My name is Bob.");}};

var x = SayMyName('bob');
x();

您可以使用
bind
方法修复一些参数

var variable = SayMyName.bind(null, "bob");

但是,在IE+1中,这不适用于实际回答我的问题和不使用附件。