文章目录
ES6语法
ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范
一、ES6新增语法
1. let 关键字
- 特性一 :有块级作用域
{}
里面就是块级作用域
let
声明的变量只在所处于的块级有效
let
关键字声明的变量才具有块级作用域,var
没有
// 防止循环变量变成全局变量
for (let i = 0; i < 10; i++) {
console.log(i)
}
console.log(i) // i is not defined
- 特性二:没有变量提升
在使用let
关键字声明变量时, 必须先声明后使用
console.log(a) // 报错
let a = 100
- 特性三:暂时性死区
let 关键字声明的变量, 会和当前作用域绑定
var a = 10
if (true) {
console.log(a) // 报错 a is not defined
let a = 20
}
- 经典面试题
var arr = [];
for (var i = 0; i < 2; i++) {
arr[i] = function () {
console.log(i);
}
}
arr[0]();
arr[1]();
关键点:变量 i
是全局的,函数执行时输出的都是全局作用域下的 i
值
let arr = [];
for (let i = 0; i < 2; i++) {
arr[i] = function () {
console.log(i);
}
}
arr[0]();
arr[1]();
关键点:每次循环都会产生一个块级作用域,每个块级作用域中的变量 i
都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的 i
值
2. const 关键字
- 特性一 :有块级作用域
- 特性二 :声明时必须有初始值
const PI // 报错
const PI = 3.1415926
- 特性三 :赋值后无法更改地址值
基本数据类型 值 不能改
引用数据类型 数据结构内部值 可以改
const PI = 3.14;
PI = 100; // Assignment to constant variable.
const ary = [100, 200];
ary[0] = 'a';
ary