javascript的变量声明
栏目: JavaScript · 发布时间: 6年前
内容简介:在代码中,声明变量是基础,但是在javascript中,经历了从var到let,const的变化,到底有什么本质上的区别呢?本文的原文在我的博客中:欢迎star
在代码中,声明变量是基础,但是在javascript中,经历了从var到let,const的变化,到底有什么本质上的区别呢?
本文的原文在我的博客中: https://github.com/RachelRen/blog/issues/25
欢迎star
var 声明的提升
- var 不管在哪里声明的,都会被当成在当前作用域顶部声明的。
- 变量提升是在预编译的过程中发生的,赋值为undefined
- 被声明的变量还是在原来的地方,真正被赋值
块级声明
块级声明用于声明在指定块的作用域之外无法访问的变量。
- 在同一作用域内,相同的标识符只能有一个
- 当执行流离开这个块级,那么这些变量会被销毁
- 块级作用域中的变量会屏蔽全局作用域中的相同标识符的变量(即取的是块级作用域中的值)
- const 不能再赋值,但是可以修改 对象 的属性值
- 不会变量提升
临时死区
let 和 const 是不会变量提升的,所以在声明变量之前,是用 typeof
是会报错的。
临时死区(TDZ)用来描述let/const不提升的效果
let 声明在循环内部的行为是标准中专门定义的,它不一定与let的不提升特性相关。
在循坏中的应用
在for-in 和 for-of 循环中,let和const会每次迭代时创建新绑定,所以在循环体内,每次都访问到响应的迭代值。但在for-lenght中,const会报错。
在全局作用域中的区别
var在全局作用域中,会创建一个新的全局变量作为全局对象。
let/const会在全局作用域下创建一个新的绑定,但是这个绑定不会添加为全局对象的属性(let/const不能覆盖全局,只能屏蔽它)
用var来定义全局变量,可以用在浏览器的跨frame或跨window访问代码。
最佳实践
默认使用const,只在确定需要改变值的时候用let。为了实现代码的不可变,防止某些错误的产生。
以上所述就是小编给大家介绍的《javascript的变量声明》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python for Data Analysis
Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99
Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!