变量的声明提前
变量的声明会提前,这个相信大家都知道了,直接上代码:
function testFn(){
console.log(name);
var name = 'Bill';
}
这段代码会在控制台打印出undefined
,很显然,js中使用一个不存在的变量会报错,然而我们的name是在执行console.log()之后定义的,上面的代码等价于:
function testFn(){
var name;
console.log(name);
name = 'Bill';
}
所以并不会出现错误,这就是变量的生命提前。
函数的声明提前
函数的声明提前和变量的生命提前类似,但是我们在声明函数的时候有两种方式经常使用,一种是JS中的函数声明:
function testFn(){
}
就像这样,而另一种形式是使用表达式的方式声明:
var test = function test () {
}
这两种方式在使用的时候需要注意一下,第一种方式可以在声明函数之前调用函数(因为函数的声明会提前,使得你在调用函数的时候,函数已经存在了),而第二种方式则类似于变量的提前声明,只是声明了test这个变量,但并没有对其赋值,所以当你在声明函数之前调用这个函数时,test虽然存在,但他的值还是undefined
,所以会出现错误。