概述
ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。
一、let
let 声明的变量只在 let 命令所在的代码块内有效,不能重复声明。
1、代码块内有效
{ let a = 0; var b = 1; }
a // ReferenceError: a is not defined
b // 1
2、不能重复声明
let a = 1; let a = 2;
a // Identifier 'a' has already been declared
3、不存在变量提升
let 不存在变量提升,var 会变量提升:
console.log(a); //ReferenceError: a is not defined
let a = "apple";
console.log(b); //undefined
var b = "banana";
二、const 命令
const 声明一个只读变量,声明之后不允许改变。意味着,一旦声明必须初始化,否则会报错。
暂时性死区:
var PI = "a"; if(true){ console.log(PI); // ReferenceError: PI is not defined const PI = "3.1415926"; }
ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量 PI 之前使用它会报错。
const如何做到声明的值是常量
保证变量指向的内存地址所保存的数据不允许改动。
对于简单类型(数值 number、字符串 string 、布尔值 boolean),值就保存在变量指向的那个内存地址,因此 const 声明的简单类型变量等同于常量。
对于复杂类型(对象 object,数组 array,函数 function),变量指向的内存地址其实是保存了一个指向实际数据的指针,所以 const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,所以使用 const 声明复杂类型对象时要慎重。
三、 var
定义变量,没有块的概念,可以跨块访问,不能跨函数访问,不初始化出现undefined,不会报错。
最后
以上就是缓慢电话为你收集整理的es6-let与const的全部内容,希望文章能够帮你解决es6-let与const所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复