ES6,新增语法整理之let与const

ES6介绍

ES6,全称为ECMAScript 2015,是JavaScript语言的一个重大更新版本。

这个版本带来了许多新特性和改进,极大地增强了JavaScript的功能和易用性。ES6的引入标志着JavaScript从一门主要用于浏览器端脚本的语言,逐渐发展成为一门能够胜任复杂应用开发的强大语言。

ES6之let及const命令

新增了 letconst 命令,用来声明变量。

let命令
1、let声明的变量只在它所在的代码块有效。
{
  let a = 1;
  var b = 2;
}

console.log(a) 
ReferenceError: a is not defined
console.log(b) 
1

let 声明的变量只会在代码块内部有效,外部使用会抛出ReferenceError异常 。

2、同一个作用域不可使用 let 重复声明同一个变量

function testFunction() {
  let a = 1;
  var a = 2;
}
//报错  SyntaxError: Identifier 'a' has already been declared

function testFunction() {
  let b = 1;
  let b = 2;
}
//报错  SyntaxError: Identifier 'b' has already been declared

报错表示  变量a 、b已经被声明了, 不能重复被声明。
同时说明let声明的变量名, 不管是let还是var在同一个作用于中都不能再次被声明。
3、let声明的变量不存在变量提升, var声明的变量会提升到作用域的最顶部
console.log(a); // 输出 undefined,而不是报错  
var a = 1;  
console.log(a); // 输出 1

console.log(b); // 输出  ReferenceError: Cannot access 'b' before initialization  
let b = 1;
console.log(b); // 输出 1

报错表示 let 声明的变量,只能在声明之后使用, 不声明就使用会抛出错误 ReferenceError
var声明的变量会被提升到作用域的顶部, 但是值为undefined
4、“暂时性死区”

在JavaScript中,当使用let和const关键字声明变量时,会存在一个“暂时性死区”。这意味着,从代码块的开始到变量被声明的位置之间,该变量是处于一个不能访问的状态,即它处于一个“死区”内。如果在这个“死区”内尝试访问该变量,JavaScript会抛出一个引用错误(ReferenceError),指出该变量尚未初始化,因此不能被访问。

console.log(x); // ReferenceError: x is not defined(在严格模式下)或x是undefined(在非严格模式下,但这是由于变量提升,与TDZ无关)  
let x = 2;
const
1、const用来声明一个只读的常量。一旦声明,常量的值就不能改变
const b = 123;  
b = 456; // TypeError: Assignment to constant variable.
修改b的值,会抛出 TypeError

但是如果常量是一个对象或者数组(特殊的对象)等引用类型的常量时,引用地址不会变,但可修改对象或数组内的值,虽然可以修改值,但是不能修改其类型,比如修改为int类型,就同样会报错。


const obj= {key: "value"};  
obj.key = "value1"; // 这是允许的  
obj= 123; // TypeError: Assignment to constant variable.   这种会报错
obj= {key: "value2"}; // TypeError: Assignment to constant variable.   这种也会报错

赋值为一个另外一个对象的时候,相当于是修改引用地址,会报错。
2、只在声明所在的块级作用域内有效 同于let
3、不存在变量提升 同于let
4、不存在变量提升 同于let
5、同样存在暂时性死区 同于let

const有let所有的特性,另外还包含一个只能声明一个只读常量,常量不可更改,声明的是引用类型的数据时候,可修改其值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值