关于变量提升这个玩意,你说简单吧,很多人做好几年前端了,仍然会晕掉,例如说我。
前几天笔试遇到一个变量提升的问题,答案是写出来了,然后面试官让我讲,我就讲不出来了。
今天分享一篇看到别人的总结,加上一点自己的理解。希望能有所帮助,自己也能记住。
1.关于声明变量的过程:
var a = 1; var b = 2;
其实他的执行过程是这样的:
var a; var b; a = 1; b = 2;
先声明变量,后执行赋值。
2.变量提升
function test(){
a=2;
var a;
console.log(a);
}
test()//2执行过程:
function test(){
var a;
a=2;
console.log(a);
}再看一个例子
var a = 2;
function test(){
console.log(a);
var a = 1;
}
test()//undefined;有木有人有点晕的,哈哈,其实看看执行过程就懂了:
var a = 2;
function test(){
var a;
console.log(a);
a = 1;
}
test()//undefined;这个就是变量声明的提升,以及执行顺序。
函数内部的声明变量被提升到了第一句就执行。赋值语句仍然在原来的位置。
3.函数声明,这里必须知道一点:函数声明提升,优先级高于变量声明提升。
console.log(foo);
var foo =2;
function foo(){
}执行过程:
function foo(){
};
var foo;//函数声明也是声明变量的方式,该声明为重复声明,并不执行;
console.log(foo);
foo=2;最后分享一道经典笔试题
var a = 2;
function b(a){
console.log(a);
var a = 1;
function a(){}
console.log(a);
}
b(a);不会的敲到控制台,看看自己想的对不对。
本文出自 “11480093” 博客,请务必保留此出处http://11490093.blog.51cto.com/11480093/1911334
原文地址:http://11490093.blog.51cto.com/11480093/1911334