简介:很多概念不清或忘记,重新构建自己的知识体系。每天问自己1~多个问题。我是菜鸟 成为大神之路!
1. JavaScript 中,定义函数时用 var foo = function () {} 和 function foo(){} 有什么区别?
这两个方法的根本区别:JavaScript 函数和变量声明的“提前”(hoist)行为
-
如果我们使用 匿名函数
var foo = function () {}
这种方式, 编译后变量声明foo
会“被提前”了,但是他的赋值(也就是function函数体
)并不会被提前。 也就是,匿名函数只有在被调用时才被初始化
。 -
如果我们使用
function foo(){}
这种方式, 编译后函数声明和他的赋值都会被提前。 也就是说函数声明过程在整个程序执行之前的预处理就完成了
,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以
。
foo();
function foo(){
console.log('一次执行');
}
var number = 0;
function foo(){
console.log('一次执行',number);
}
foo();
function foo(){
console.log('二次执行',number);
}
foo();
参考文章中有涉及:第 13 天内容
var foo = function(){}
var foo = function(){}();
function(){}
function(){}()
(function(){})();
(function(){}());
function foo(){}
function foo(){}();
function foo(){}(a);
(function foo(){});
(function foo(){})();
!function(){}();
new function(){}();
参考文章:
① www.cnblogs.com/TomXu/archi…
② www.cnblogs.com/shuishuowob…