函数声明
一个标准的函数声明,由关键字function 、函数名、形参和代码块组成。
有名字的函数又叫具名函数。
举个例子:
function quack(num) {
for (var i = 0; i < num; i++) {
console.log("Quack!")
}
}
quack(3)
函数表达式
函数没有名称,而且位于一条赋值语句右边,被赋给一个变量。
在语句(如赋值语句)中,以这样的方式使用关键function时,创建的是函数表达式。
没有名称的函数又叫匿名函数。
举个例子:
var fly = function(num) {
for (var i = 0; i < num; i++) {
console.log("Flying!");
}
}
fly(3)
主要思路:先执行“函数声明”,再执行代码
例子1
var foo = function(){ console.log(1) }
function foo(){ console.log(2) }
foo();
执行顺序:
- 执行function foo(){ console.log(2) },进行"函数声明"
- 执行var foo = function(){ console.log(1) },声明变量,覆盖之前声明的函数
- 调用foo()函数,输出1
例子2
foo();
var foo = function(){ console.log(1) }
function foo(){ console.log(2) }
foo();
执行顺序:
- 执行function foo(){ console.log(2) },进行"函数声明"
- 调用foo()函数。由于此时foo函数还没有被var foo = function(){ console.log(1) }覆盖,所以输出为2
- 执行var foo = function(){ console.log(1) }
- 调用foo()函数,因为foo已经被覆盖,此时输出1
- 最终输出结果:2、1