「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。
前言
本文章将为大家介绍ES6
常用中的知识点,后续也会更新介绍ES7-12
的新语法。
ES系列文章
ES6简介
ES6
, 全称ECMAScript 6.0
,是 2015.06 发版。
ES6 主要是为了解决 ES5
的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。
let 和 const
let 变量
- 不属于顶层对象window 把顶层对象跟全局挂钩,污染全局变量,js设计初期一大问题
let a = 5
console.log(a)
console.log(window.a)
//输出5 undefined
- 不允许重复声明 let不可以在相同作用域中重复声明同一个变量,包括也不能和var,const变量名重复,这样代码更加安全。
let x = 13;
let x = 23;
console.log(a)
//报错 let不可重复声明
- 不存在变量提升 在使用var进行变量定义时,会发生变量提升。当变量a就已经存在,没有赋初始值,因此在赋值前输出时,则会输出undefined
console.log(a)
var a = 5
//undefined
//上面代码等同于
var a
console.log(a)
a = 5
- 暂时性死区 若块级作用域内存使用let命令声明的变量,则所在区块对该变量形成封闭作用域,即该变量无视外部的同名变量。
function foo (a = 2, b = a){
console.log(a, b)
}
foo()
- 块级作用域 let命令声明的变量只在其块级作用域中有效,就是在{}中。
if (true) {
let a = 5
}
const 常量
- const定义的常量不能被改变,一旦声明,常量的值就不能改变。因此,const一旦声明变量,就必须初始化,不能留到以后赋值。
- const声明的常量,也和let一样不可重复声明。
- const声明的常量不存在提升。
- const与let一样, 只在声明所在的块级作用域内有效。
- const声明的常量同样存在暂时性死区,只能在声明的位置后使用。
- const实际上保证的,并不是变量的值不得改动,而是变量所指向的那个内存地址所保存的数据不得改动。
const a = 5
a = 6
const a
a = 5
- 块级作用域 const命令声明的变量只在其块级作用域中有效,就是在{}中。
if (true) {
const a = 5
}
- 暂时性死区
if (true) {
console.log(a)
const a = 5
}
一个前端小白,若文章有错误内容,欢迎大佬指点讨论!