ES6
聲明與表達(dá)式
let
作用域在塊里面
var
全局
注意 函數(shù)有自己的作用域

const
常量
常量的值 是不能被更改的
可以使用const 來做預(yù)定義 處理

應(yīng)用場景
1.私有協(xié)議
即時(shí)通訊
與硬件通訊
2.預(yù)定義數(shù)據(jù)值
網(wǎng)絡(luò)接口
解構(gòu)賦值
定義
解構(gòu)賦值是對賦值運(yùn)算符的擴(kuò)展。
他是一種針對數(shù)組或者對象進(jìn)行模式匹配,然后對其中的變量進(jìn)行賦值。
在代碼書寫上簡潔且易讀,語義更加清晰明了;也方便了復(fù)雜對象中數(shù)據(jù)字段獲取
數(shù)組格式的解構(gòu)賦值
基本
let [a,b] = [2,3];
let [username,age] = ["小明",2]

可嵌套
let [username,[boy,girl],age] = ["小明",["小貓","小花"],12];

可省略
/*
* 可以省略部分變量名
* */

let [a,,,b] = [1,3,5,6];
console.log(a)
console.log(b)
不完全解構(gòu)
如果有變量 不需要初始化值 就可以使用不完全解構(gòu)
let [view = document.createElement("div"),timer] = [];
剩余運(yùn)算符
var [timer,...views] = [0,[document.createElement("div"),document.createElement("div")]]
console.log(views[0][0]);
字符串
let [a, b, c, d, e] = 'hello';
// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
對象模型的解構(gòu)(Object)
基本
let { foo, bar } = { foo: "哈哈哈", bar: 'bbb' };
console.log(foo,bar);
可嵌套
{
let {a:[b,c]} = {a:[22,33]}
console.log(b)
console.log(c)
let {key:[name1,name2]} = {key:["屬性1的值","屬性2的值"]}
console.log(name1)
console.log(name2)
let {
listener:[
click,
dlclick,
tapstart
],
event:[ce,de,te]
} = {
listener:[
function () {
console.log("click")
},
function () {
console.log("dlclick")
}
],
event:[{name:"點(diǎn)擊"},{name:"雙擊"}]
}
click();
console.log(ce)
/*
* 定義接口文件 http
*
* 主機(jī)地址 host:"api.bianmazhe.com"
* 測試環(huán)境 evn:true
* api:
*? login:"/login"
*? register:"/register"
* */
let {http:[host,evn,api]} = {
http:["api.bianmazhe.com",false,{login:"/login",register:"/register"}]
}
console.log(api.login)
let {http:[host1,evn1,[login,register]]} = {
http:["api.bianmazhe.com",false,["/login","/register"]]
}
console.log(login);
}
可省略
let {key:[]} = {key:[2,3]}
let {key:[]} = {key:[2,3],key2:"dfk"}
let {} = {key:[2,3]}
不完全解構(gòu)
let obj = {p: [{y: 'world'}] };
let {p: [{ y }, x ] } = obj;
// x = undefined
// y = 'world'
剩余運(yùn)算符
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
// a = 10
// b = 20
// rest = {c: 30, d: 40}
Symbol
用于定義一個(gè)獨(dú)一無二的屬性
通過Symbol創(chuàng)建出來的兩個(gè)屬性是不相同的
let n1 = Symbol(2);
let n2 = Symbol(2);
console.log(n1 === n2);
