JS - 为变量赋值函数

时间:2016-04-16 12:20:49

标签: javascript

众所周知,以下不会运行a()函数,因此警告框不会出现

// 1st
function a() {
  alert('A!');
  return function() {
    alert('B!');
  };
};

我们知道以下代码将运行a()函数警告框'A!'将出现

// 2nd
function a() {
  alert('A!');
  return function() {
    alert('B!');
  };
};
a(); // calling function

但是,如果我们运行以下代码, a()函数将被调用警告框'A!'也会出现,就像上面的第二个代码

一样

// 3rd
function a() {
  alert('A!');
  return function() {
    alert('B!');
  };
};
var x = a(); // assigning function to new variable

问题: 为什么会发生这种情况(第3段)?我们还没有调用a()函数(我目前的理解)。我们不是只是将x分配给()函数吗?。

2 个答案:

答案 0 :(得分:10)

  

我们只是将x分配给()函数吗?。

不,您已将()的返回值分配给x。

如果您不想致电a,请执行

var x = a;

以后再做

x();

答案 1 :(得分:4)

你错了。您正在调用该函数:

var x = a(); // assigning function to new variable

这行代码表示在编写a时调用a()。括号表示调用。

要为变量分配函数,您只需使用名称,例如:

var x = a;

或将名称传递给函数f

f(a)

作为一个反例,你在下一行代码中调用它并传递给g而不是函数是执行的结果:

g(a())