ES6 简单入门分享
块级作用域
使用方法
ES5只有全局作用域和函数作用域,没有块级作用域。一不小心变量就会被覆盖
let 和 const 为 es6 提供了块级作用域 (所谓块级作用域就是,变量只在代码块中生效)
这两个的用途与var类似,var是全局生效的 ,
* let和const 是在当前代码块有效,并且都不能重新声明。
* const 一旦声明某个变量就不能改变其值。
{
var a = 1;
let b = 2;
const c = 3;
c = 4; //Uncaught TypeError: Assignment to constant variable
}
console.log(a); //1
console.log(b); //Uncaught ReferenceError: b is not defined
console.log(c); //Uncaught ReferenceError: c is not defined
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
变量提升问题
使用var声明变量,可以在声明之前使用这个变量,let 和 const 则不行, 使用前必须先定义 (就不用代码演示了)
暂时性死区
只要在块级作用域内,存在let 或 const。这个变量就是被绑定状态。
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
1
2
3
4
5
6
1
2
3
4
5
6
变量的解构赋值
百科:解构可以称为结构分解。
自己理解:把某种数据类型,分解成单个变量的过程
解构规则:
1、可以为解构设置默认值
2、如果结构不成功,变量被设置为 undefined
3、数据结构具有 Iterator 接口 (ps: 新增加的一种接口形式,是可以被遍历的数据接口)
4、数组和字符串的解构是按照顺序来赋值的
5、对象是按照属性名对应变量名。因为对象的属性没有顺序
数据的解构
//看看a b c d e 的值
let arr = [1,2,null];
let [a,b,c,d,e='5'] = arr;
1
2
3
1
2
3
对象的解构
let obj = {'a':1,'b':2};
let {a,b:str,c=5} = obj;
console.log(a);
console.log(str);
console.log(c);
1
2
3
4
5
1
2
3
4
5
字符串和数值也可以解构,我觉得用的不多
<dt><a href="www.bdqcp.net">保定客运中心</a>
浙公网安备 33010602011771号