JavaScript中函数执行问题

JavaScript1.
var b = function box(){
    alert(1);
};
--------------------
2.
function box(){
    alert(1);
}
var b = box();

这个例子中,第一个代码并不会有警告框,而第二个会有.这是为什么?第一个赋值语句为什么没有执行函数,而第二个赋值语句却执行了函数?

阅读 5.4k
6 个回答
  1. 第一个是函数表达式,没有执行。
  2. 第二个相当于:
javascriptvar b = box;
b();

另外,box是函数名,只作为栈区里的一个指针,指向function(){alert(1);}

  1. var b = function box() { ... }只是一个函数表达式,并没有调用函数。
  2. var b =box(); 等于 var b = (funciton box(){ ... }); 如果box函数有返回值的话就赋值给变量b
新手上路,请多包涵
var b = (function box(){
  alert(1);
})();

这样才1=2.

第一个函数你只是声明,又没有执行,第二个函数你是执行了。

var b = box();

等于

var b = (function box(){...}());

如果只是想把box方法赋给b

var b = box;

1.
var b = function box(){
alert(1);
}();

=============== 等价于 ============>
2.
function box(){
alert(1);
}
var b = box();

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题