01-初识ES6
# 什么是 ES6
ECMAScript 是由 ECMA 这个标准化组织制定的一个语言标准,6 是版本号。
$$ECMAScript = 语法 + API$$
$$JavaScript(浏览器端) = ECMAScript(语法 + API) + DOM + BOM$$
主流浏览器的最新版本几乎全部支持 ES6,IE 老版本等不支特的浏览器,可以用 Babel 转码。
# let 和 const
// 1.let 和 const 是什么
// 声明变量或声明常量
// var 声明变量
// let 代替 var,声明变量
// const 声明常量 constant
// 2.let 和 const 的用法
// var 一样
var username = 'Alex';
let age = 18;
const sex = 'male';
console.log(username, age, sex);
// 3.什么是变量,什么是常量
username = 'ZS';
age = 28;
console.log(username, age);
// 报错
sex = 'female';
// var、let声明的就是变量,变量一旦初始化之后,还可以重新赋值
// const 声明的就是常量,常量一旦初始化,就不能重新赋值了,否则就会报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# const
const 就是为了那些一旦初始化就不希望重新赋值的情况设计的。
const 的注意事项:
使用 const 声明常量,一旦声明,就必须立即初始化,不能留到以后赋值
const 声明的常量,允许在不重新赋值的情况下修改它的值(引用类型)
const person = { username: 'Alex' }; person.username = 'ZhangSan'; console.log(person);
1
2
3
# let、const 与 var 的区别
区别有 5 个:
重复声明
var 允许重复声明,let、const 不允许。重复声明即已经存在的变量或常量,又声明了一遍。
变量提升
var 会提升变量的声明到当前作用域的顶部,let、const 不存在变量提升。
暂存性死区
let、const 存在暂时性死区。只要作用域内存在 let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响。
// 在全局作用域用 let 声明了 a、b let a = 1; let b = 1; function func() { // 输出 1。因为函数作用域内没有用 let/const 声明 b,就会去外层作用域去找 b console.log(b); // 报错。函数作用域内有 let 声明了 a,就不会去外层作用域去找 a // console.log(a); for (let i = 0; i < 3; i++) { // 报错。块级作用域内有 let 声明了 a,就不会去外层作用域去找 a // console.log(a) let a = 2; } let a = 1; } func();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21window 对象的属性和方法(全局作用域中)
全局作用域中,var 声明的变量,通过 function 声明的函数,会自动变成 window 对象的属性或方法。let、const 不会。
// var/function var a = 18; function fun() {} console.log(window.a); // 18 console.log(window.fun === fun); // true // let/const let b = 18; const fun2 = function () {}; console.log(window.b); // undefined console.log(window.fun2); // undefined
1
2
3
4
5
6
7
8
9
10
11块级作用域
var 没有块级作用域,let/const 有块级作用域。
{ var a = 1; let b = 2; } console.log(a); // 1 console.log(b); // 报错,b 未定义
1
2
3
4
5
6
编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19