首页 > 代码库 > js 变量提升
js 变量提升
首先我们来看2段代码:
1.
function value(){ return 1; } var value; alert(value);
2.
function value(){ return 1; } var value = http://www.mamicode.com/1 ; alert(value);
大家可以想想,1和2 的结果会是什么?
我们再来看一个题目:
var uname = ‘jack‘ function change() { alert(uname); var uname = ‘lily‘ alert(uname) } change();
第一个uname会弹出defined,很多人不理解为什么。其实这就是javascript的变量提升;
下面我先来申明2个变量:
var a = ‘a‘; var b = ‘b‘;
实际上他是这样解析的:
var a,b; a = "a"; b = "b";
所以上面的代码会解析成这样
var uname = ‘jack‘ function change() { var uname; alert(uname); uname = ‘lily‘; alert(uname) } change();
这样我们就知道为什么第一个弹出undefined了。
函数声明也会和变量申明一样提前。我们经常看到这样的写法:
a(); function a(){}
或是
function a(){} a();
这两种写法都没有什么问题。但是如果是函数表达式就不行了,接着往下看:
temp(); var temp = function(){ console.log(111); }
看到这里,大家就知道 变量声明和函数申明的提升。函数表达式不会提升。
那么,大家回答看看。最初的2个题目的答案是什么?大家都清楚原理了吗?
js 变量提升
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。