ES6学习笔记(1)--let和const

LET和const命令

let和var三大区别:
  1. let声明的变量只在它所在的代码块有效,而非var为函数作用域

  2. let不会变量声明提前,未声明前使用,直接报错,var不会报错undefined

  3. let回暂时性死区,一旦区块内let声明了a,全局变量a不会在该区块起

  4. let不允许在相同作用域内,重复声明同一个变量

为什么引进块级作用域?
  1. 防止内层变量可能覆盖外层变量

  2. for循环的i变量控制循环,防止泄露

块级作用域
  1. 使用{}代替立即执行匿名函数(IIFE)

  2. ES5的严格模式规定,函数只能在顶层作用域和函数内声明,其他情况(比如if代码块、循环代码块)的声明都会报错。

  3. ES6由于引入了块级作用域,这种情况可以理解成函数在块级作用域内声明,因此不报错,但是构成区块的大括号不能少,否则还是会报错。

const
  1. 声明一个只读的常量。一旦声明,常量的值就不能改变,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

  2. const的作用域与let命令相同:

只在声明所在的块级作用域内有效
const命令声明的常量也是不提升
同样存在暂时性死区,只能在声明的位置后面使用
同样不可重复声明

  1. 对于复合类型的变量(例如对象、数组),变量名不指向数据,而是指向数据所在的地址。

const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。
如果真的想将对象冻结,应该使用Object.freeze方法,地址数据也不会变了

变量声明
  1. ES6:var/function/let/const/import/class

  2. ES5:var/function

全局对象的属性
  1. var命令和function命令声明的全局变量,依旧是全局对象的属性

  2. let命令、const命令、class命令声明的全局变量,不属于全局对象的属性,eg:let b = 1; window.b 为undefined

学习来源-阮一峰:http://es6.ruanyifeng.com/

关键字:es6, 变量, const, let

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部