ECMAScript 是 JavaScript 的标准化版本,由 ECMA 国际组织制定。它定义了 JavaScript 的语法、类型、语句、关键字和保留字等。
ES6 是 ECMAScript 的第六个版本,于 2015 年发布,引入了许多重要的新特性,使 JavaScript 更加现代化。
变量声明
作用域分为块作用域、函数作用域和全局作用域,优先级为:全局作用域 > 函数作用域 > 块作用域。
let 声明
使用 let 声明的变量仅在其定义的块(用 { } 包围的代码块)内有效。这意味着变量在块外不可访问。
{
let x = 10;
console.log(x); // 输出 10
}
console.log(x); // ReferenceError: x is not defined
var 声明
使用 var 声明的变量的作用范围是整个函数体。如果在函数外部声明,变量将是全局的。
function myFunction() {
var x = 10; // 函数作用域
console.log(x); // 输出 10
}
myFunction();
console.log(x); // ReferenceError: x is not defined
const 声明
const 用于声明常量,其特点和语法与 let 相同,但有以下区别:
- 常量不允许修改值。
- 常量必须赋初始值。
const与let相同,同样有块作用域(没有预解析,存在变量提升问题)。const定义的引用类型值内容可以修改,但内存地址不能变。
const PI = 3.1415926;
// PI = 3.14; // 报错,常量不允许修改值
// const numA; // 报错,常量必须赋初始值
// numA = 10;
const obj = { a: 1 };
console.log(obj);
obj.a = 20; // 不报错,没有修改到内存地址
obj = { b: 1 }; // 报错,修改了内存地址
console.log(obj);
// 如果存储的是一个数值,存的就是一个值
// 如果存储的是一个对象,存的就是一个内存地址
解构(数组,对象,字符串)
解构是指左边一种结构,右边一种结构,左右一一对应。主要方式包括完全解构、不完全解构、忽略方式解构、嵌套解构、剩余运算符方式解构和解构默认值。
数组解构
1. 完全解构
let a, b;
[a, b] = [1, 2];
console.log(a, b);
2. 不完全解构 (部分解构)
let [a] = [1, 2, 3];
console.log(a);
let [b, c] = [1];
console.log(b, c); // 如果解构不成功,变量值就默认等于 undefined
3. 忽略方式解构
let [, , a] = [1, 2, 3];
console.log(a);
4. 嵌套解构
let [a, b, [c]] = ["a", "b", ["c"]];
console.log(a, b, c);
5. 剩余运算符方式解构
let [a, ...b] = [1, 2, 3, 4, 5, 6, 7];
console.log(a, b); // a 只取第一个,剩下的都赋值给 b
6. 解构默认值
let [a, b = 100] = [90];
console.log(a, b); // 如果设置了默认值,当没有第二个参数值时就取默认值 100
使用场景:
- 场景 1:使用解构方式实现两数交换
- 场景 2:使用函数返回值


