let和const命令

let和var的一些区别

  1. var存在变量提升,let不存在变量提升
console.log(a)    //undefined
console.log(b)    //"ReferenceError: a is not defined
var a=1
let b=2

暂时性死区(temporal dead zone,简称 TDZ)

a=2    //"ReferenceError: a is not defined
let a
console.log(typeof keke)    //undefined
console.log(typeof a)    //"ReferenceError: a is not defined
let a

暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

  1. let不可以重复声明
let a=1
let a=2  //"SyntaxError: Identifier 'a' has already been declared
  1. 块级作用域
{
    var a=1
}
console.log(a)    //1
{
    let b=1
}
console.log(b)    //"ReferenceError: b is not defined

const用法与let一致,区别在于const声明只读常量

const A=1
A=2    //"TypeError: Assignment to constant variable.

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的

const A={}
A.a=1
console.log(A)    //Object {a: 1}
A=['a','b']    //"TypeError: Assignment to constant variable.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 997评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,648评论 0 2
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 620评论 0 0
  • ES6声明变量的方法:var、function、let、const、import、class let命令用于声明变...
    张果果阅读 185评论 0 0
  • 1.let命令 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let...
    冷洪林阅读 210评论 0 1