众所周知,以下内容不会运行a()函数,因此不会出现警告框
// 1st
function a() {
alert('A!');
return function() {
alert('B!');
};
};Run Code Online (Sandbox Code Playgroud)
我们知道以下代码将运行a()函数和警告框'A!' 会出现
// 2nd
function a() {
alert('A!');
return function() {
alert('B!');
};
};
a(); // calling functionRun Code Online (Sandbox Code Playgroud)
但是,如果我们运行以下代码,将调用a()函数并且警告框'A!' 也会出现,就像上面的第二个代码一样
// 3rd
function a() {
alert('A!');
return function() {
alert('B!');
};
};
var x = a(); // assigning function to new variableRun Code Online (Sandbox Code Playgroud)
问题: 为什么会发生这种情况(第3段)?我们还没有调用a()函数(我目前的理解).我们不是只是将x分配给()函数吗?
gur*_*372 11
我们不是只是将x分配给()函数吗?
不,您将返回值从()分配给x.
如果你不想打电话a,那就去吧
var x = a;
Run Code Online (Sandbox Code Playgroud)
后来呢
x();
Run Code Online (Sandbox Code Playgroud)
你错了。您正在调用该函数:
var x = a(); // assigning function to new variable
Run Code Online (Sandbox Code Playgroud)
这行代码表示a编写时调用a()。括号表示调用。
要将函数分配给变量,您必须仅使用名称,例如:
var x = a;
Run Code Online (Sandbox Code Playgroud)
或将名称传递给函数f:
f(a)
Run Code Online (Sandbox Code Playgroud)
作为一个反例,您在下一行代码中调用它,并将g其执行的结果传递给not 函数:
g(a())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12887 次 |
| 最近记录: |