侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 146 篇文章
  • 累计创建 60 个标签
  • 累计收到 2 条评论
Web

ES6中的let和const关键字

liveJQ
2020-09-12 / 0 评论 / 0 点赞 / 599 阅读 / 911 字 / 正在检测是否收录...
广告 广告

重新声明

  • ES6之前可以重新声明定义同一var变量,例如:
var x = 10;
var x = 2;
console.log(x);//输出2
  • ES6中的let不能在同一作用域中重新声明变量

声明提升

  • ES6之前,变量可以先赋值使用后再声明,例如:
x = 10;
console.log(x);//输出10
var x; //不声明也行

//扩展
"use strict";//ES5新增的严格模式
y = 10;
console.log(y);//输出10
var y; //在严格模式之后的代码,不声明会报not defined错误

函数声明和变量声明总是会被编译器“悄悄地”移动到最前面

  • ES6中的let必须先声明再使用

作用域

  • ES6之前只有两种作用域:全局变量和函数内的局部变量,都用var关键字声明。例如:
var x = 10;//全局
(function Text() {  
    var x = 2;//局部
	console.log(x);//输出2
})()
console.log(x);//输出10

上面用var声明的全局变量x值可以调用window.x输出,若使用let声明则不行

  • ES6中新增的块级和循环作用域,用let关键字声明。例如:
//块级作用域
var x = 10;
{
	let x = 2;
}
console.log(x);//输出10

//循环作用域
var x = 10;
for(let x = 0; x < 2; x++) {}
console.log(x);//输出10

上面的两块代码中的let如果换成var,则输出2

const常量

constlet一样都具有块级作用域,都不能在同一作用域中重新声明变量,区别是const使用前必须先初始化且初始化后无法重新赋值。

虽然无法重新赋值,但可以改变对象(JSON)或者数组中的值,例如:

const fruits = {name:"apple", color:"red", sum:"10"};
 
// 修改属性
fruits.sum = "100";
 
// 添加属性
fruits.owner = "liveJQ";

相关资料

  1. ES6语法中常量声明(const)的实现原理
  2. 菜鸟教程
0

评论区