var 声明
var 声明可以在包含它的函数,模块,命名空间或全局作用域内部任何位置被访问。因此常称 var 作用域或函数作用域。函数参数也使用函数作用域。
注:多次声明同一个变量不会报错。
let 声明
当 let 声明一个变量,使用的是词法作用域或块级作用域。
注:
- 块级作用域变量在包含它们的块或
for循环之外是不能访问的。 - 不能在被声明之前或读或写。
- 直到声明它的代码之前的区域都属于暂时性死区。
- 在
catch语句里声明的变量也具有同样的作用域规则。
try {
throw "oh no!";
} catch (error) {
console.log("error"); // error
}
console.log(error); // 报错
/**
* Uncaught ReferenceError: error is not defined
at index.js:71
(anonymous) @ index.js:71
*/
const 声明
定义常量,被赋值后不能再改变。
解构
解构数组
let input = [1, 2];
let [one, two] = input;
console.log(one); // 1 === one = input[0];
console.log(two); // 2 === two = input[1];
// 在数组里使用...语法创建剩余变量
let [list1, ...list2] = [1, 2, 3, 4, 5];
console.log(list1); // 1
console.log(list2); // [2, 3, 4, 5]
对象解构
let obj = {
objName: '张三',
objSex: '男',
objAge: 28,
};
let { objName, objSex } = obj;
console.log(objName); // 张三
console.log(objSex); // 男