函数
函数声明与表达式
函数声明
- function foo(){}
上面的方法会在执行前被 解析(hoisted),因此它存在于当前上下文的任意一个地方, 即使在函数定义体的上面被调用也是对的。
- foo();// 正常运行,因为foo在代码运行前已经被创建
- function foo(){}
函数赋值表达式
- var foo =function(){};
这个例子把一个匿名的函数赋值给变量 foo
。
- foo;// 'undefined'
- foo();// 出错:TypeError
- var foo =function(){};
由于 var
定义了一个声明语句,对变量 foo
的解析是在代码运行之前,因此foo
变量在代码运行时已经被定义过了。
但是由于赋值语句只在运行时执行,因此在相应代码执行之前, foo
的值缺省为 undefined。