ES6学习笔记(1)--let和const
LET和const命令
let和var三大区别:
let声明的变量只在它所在的代码块有效,而非var为函数作用域
let不会变量声明提前,未声明前使用,直接报错,var不会报错undefined
let回暂时性死区,一旦区块内let声明了a,全局变量a不会在该区块起
let不允许在相同作用域内,重复声明同一个变量
为什么引进块级作用域?
防止内层变量可能覆盖外层变量
for循环的i变量控制循环,防止泄露
块级作用域
使用{}代替立即执行匿名函数(IIFE)
ES5的严格模式规定,函数只能在顶层作用域和函数内声明,其他情况(比如if代码块、循环代码块)的声明都会报错。
ES6由于引入了块级作用域,这种情况可以理解成函数在块级作用域内声明,因此不报错,但是构成区块的大括号不能少,否则还是会报错。
const
声明一个只读的常量。一旦声明,常量的值就不能改变,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
const的作用域与let命令相同:
只在声明所在的块级作用域内有效
const命令声明的常量也是不提升
同样存在暂时性死区,只能在声明的位置后面使用
同样不可重复声明
- 对于复合类型的变量(例如对象、数组),变量名不指向数据,而是指向数据所在的地址。
const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。
如果真的想将对象冻结,应该使用Object.freeze方法,地址数据也不会变了
变量声明
ES6:var/function/let/const/import/class
ES5:var/function
全局对象的属性
var命令和function命令声明的全局变量,依旧是全局对象的属性
let命令、const命令、class命令声明的全局变量,不属于全局对象的属性,eg:let b = 1; window.b 为undefined
学习来源-阮一峰:http://es6.ruanyifeng.com/
关键字:es6, 变量, const, let
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!