js变量提升函数提升

1,变量声明提升

所有的声明变量或声明函数都会被提升到当前函数的顶部,特别的只是变量或者函数的声明,并不包括赋值。

console.log(x);
var x = 1;
//打印出undefined

相当于

var x;
console.log(x);
x = 1;

这些转化是发生在js预编译时,代码执行之前。

 

2,函数声明提升

函数其实也是变量的一种,不过他有两种声明方式

  • 函数声明
  • 函数表达式
//函数声明
function fun(){

}
//函数表达式
var fun = function(){

}

正常情况下,我们使用两种写法,没有区别。

但是提到函数提升,他们的区别就出现了。

函数声明有函数提升,函数表达式却没有

var fun = function(){
    console.log(‘表达式’);
}
function fun (){
    console.log('函数声明');
}
fun();

上面这段代码,输出的最终是‘表达式’,结合变量提升很容易理解,相当于一下代码执行顺序:

function fun (){
    console.log('函数声明');
}

var fun = function(){
    console.log(‘表达式’);
}

fun();

 

posted @ 2017-07-14 17:16  拳拳  阅读(207)  评论(0编辑  收藏  举报