首页 > 其他 > 详细

ES6学习笔记

时间:2018-06-06 20:46:50      阅读:177      评论:0      收藏:0      [点我收藏+]

1、let声明变量只在块级作用域内有效
技术分享图片 技术分享图片

let在循环内使用时,只在当前轮循环有效,所以每一次都是一个新变量,循环出去后循环内的i会显示为未定义,所以会打印6

技术分享图片
用var定义只会打印一次abc

技术分享图片
用let定义会打印三次

证明了let定义的变量,每次循环都是一次新的变量
2、let声明变量在块级作用域内会形成暂时性死区
技术分享图片
在块级作用域中,声明变量之前的区域就是暂时性死区
“暂时性死区”也意味着typeof不再是一个百分之百安全的操作。
技术分享图片 技术分享图片

声明变量反而会报错,不声明反而不会报错

3、let不允许在相同的作用域内重复声明同一个变量
技术分享图片 技术分享图片

4、变量提升(没有块级作用域)
技术分享图片

因为if块内的变量提升了,所以打印的是undefined,愿意是想让if作用域外的tmp打印全局定义的时间

所以ES6有了块级作用域
技术分享图片
如果用var定义会打印10
(每个花括号{}内都是一个块级作用域,ES6允许块级作用域的随意嵌套)

5、const声明常量,一旦声明不能被改变,意味着会立即初始化,其他属性和let相同

对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址,const命令只是保证变量名指向的地址不变,并不保证改地址的数据不变
技术分享图片
上面的代码中,常量foo储存的是一个地址,指向一个对象,不变的是这个地址,不能把foo指向另一个地址,但对象本身是可变的,所以可以向对象添加新的属性

ES6学习笔记

原文:https://www.cnblogs.com/snly/p/9143429.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!