首页 > 代码库 > JS变量提升相关总结
JS变量提升相关总结
关于变量提升这个玩意,你说简单吧,很多人做好几年前端了,仍然会晕掉,例如说我。
前几天笔试遇到一个变量提升的问题,答案是写出来了,然后面试官让我讲,我就讲不出来了。
今天分享一篇看到别人的总结,加上一点自己的理解。希望能有所帮助,自己也能记住。
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
JS变量提升相关总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。