快速理解javascript变量提升

先看一个简单的例子:

var a='Hello World'; 
(function(){ 
console.log(a); 
})() 

结果很明显,打印出Hello World
另外一个例子来了:

var a='Hello World'; 
(function(){ 
console.log(a); 
var a = "good morning!";
})() 

结果有点意外,打印的是undefined,为什么呢?看看上面代码的等价变换:

var a='Hello World'; 
(function(){ 
var a;
console.log(a); 
a = "good morning!";
})() 

这里在函数作用域中变量声明 (var a) 提升了,但是初始化(a = "good morning!") 并不会提升,所以 a 变量是一个未定义的变量。
总结一点就是在一个作用域中,声明可以提升,赋值不能提升。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前端07班 王语句JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是...
    ea203453e188阅读 4,440评论 0 4
  • 语句 JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。 ...
    米塔塔阅读 3,294评论 1 10
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,550评论 0 2
  • 第1章 JavaScript 简介 JavaScript 具备与浏览器窗口及其内容等几乎所有方面交互的能力。 欧洲...
    力气强阅读 4,922评论 0 0
  • 最近一直在单曲循环孙燕姿的《The moment》,特别是听到开头那几句话“这一刻 ,回头看见自己这一路的...
    曲麻黑阅读 3,550评论 0 0

友情链接更多精彩内容