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.(obj);
obj. = ;
obj = { : };
.(obj);


