前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >es6中的Let和Const详解(文末有教程分享)

es6中的Let和Const详解(文末有教程分享)

作者头像
用户10106350
发布2022-10-28 10:53:10
2170
发布2022-10-28 10:53:10
举报
文章被收录于专栏:WflynnWeb

Let:用于声明一个变量

特点:

  • 在块作用域内有效,只在let 所在的代码块有效
  • 不能重复声明(会报错提示已经定义)
  • 不会预处理,不存在变量提升

应用

  • 循环遍历监听
  • 使用let替换var是趋势
  • 主要是解决了块级作用域的需求
  • 防止出现先使用(变量),后声明(变量)
代码语言:javascript
复制
for (var i = 0; i < 5; i++) {
    console.log(i) // 0 1 2 3 4
}
console.log(i) // 5 i成了全局变量
 
==============
 
for (let j = 0; j < 5; j++) {
    console.log(j) // 0 1 2 3 4
}
// let定义的j变量只在for循环的块级作用域中生效,不存在变量提升
console.log(j) // Uncaught ReferenceError: j is not defined

暂时性死区

当你在一个块里面,利用let声明一个变量的时候,在块的开始部分到该变量的声明语句之间,我们称之为临时性死区,你不可以在这个区域内使用该变量,直到遇到其let语句为止 只要在同一作用域内存在let命令,他所声明的变量就“绑定”在这个作用域内,不管外部有没有声明

代码语言:javascript
复制
var i = 5;
(function () {
  console.log(i) // undefined
  var i = 10
})()
 
===============
 
let j = 55;
(function () {
  console.log(j) // ReferenceError: j is not defined
  let j = 77
})()
代码语言:javascript
复制
(function hhh() {
  console.log(j) // j的临时性死区 Uncaught ReferenceError: j is not defined
  let j = 77 // 从这个函数的开始部分到这里,都是新的j的临时性死区
})()

不能重复声明

代码语言:javascript
复制
let zxx = 'zxx is a great girl'
let zxx = 'zxx is 18 years old' // Uncaught SyntaxError: Identifier 'zxx' has already been declared
 
=================
 
let zxx3 = 'zxx is a great girl'
var zxx3 = 'zxx is 18 years old' // Uncaught SyntaxError: Identifier 'zxx3' has already been declared
 
==============
{
let zxx3 = 'zxx is a great girl'
var zxx4 = 'zxx is 18 years old'
}
 
{
let zxx3 = 'zxx is a good girl'
var zxx4 = 'zxx is 8 years old'
}
// 不会报错,各个块级作用域之间不互相影响

const:就是声明一个常量,大部分特点和let一样

声明的时候一定要赋值,否则会报错

代码语言:javascript
复制
const b; // Uncaught SyntaxError: Missing initializer in const declaration

对于基本的类型而言的话,比如number,string,boolean等来说,确实它就是声明一个不会变的常量,只要你修改了它,就会报错

代码语言:javascript
复制
const ZXX = 'zxx is a great girl'
ZXX = 'NO' // Uncaught TypeError: Assignment to constant variable.

不过,对于引用类型而言的话,它指的并不会对象的内容不变,而是对象的地址不变。也就是说,你可以修改对象的内部成员,但是你不可以修改该变量的地址。

代码语言:javascript
复制
const ZXX = {
  age: 18,
  name: 'zxx'
}
ZXX ==> {age: 18, name: "zxx"}
ZXX.age = 8 {age: 8, name: "zxx"}
ZXX.weight = 90 {age: 8, name: "zxx", weight: 90}
 
ZXX = {} // Uncaught TypeError: Assignment to constant variable.
// 修改了ZXX的指针,这是不允许的

因为对象是引用类型的,ZXX中保存的仅是对象的指针,这就意味着,const仅保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的。也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是允许的。

css3视频链接:https://pan.baidu.com/s/1-2J7nZ5LyMJh85fxl_4Nww

提取码:61xu

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WflynnWeb 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档