1.声明与表达式:
(a) let: 作用域在块里面
(b) var: 全局 注意 函数有自己的作用域
(c) const: 常量
(1)常量的值 是不能被更改的
(2)可以使用 const 来做预定义 处理
(3)应用场景
1.私有协议
a.即时通讯
b.与硬件通讯
2.预定义数据值 网路接口
2.解构赋值
(1)定义:
解构赋值是对赋值运算符的扩展。
他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。
(2)数组格式的解构赋值
1.基本
let [a,b]=[2,3];
let [username,age] = ["小明",4];
2.可嵌套
let [username,[boy,girl],age] = ["小明",["哈利","波特"],15];
3.可省略
/*
* 可以省略部分变量名
* */
let [a,,,,b]= [2,3,5,6];
console.log(a)
console.log(b)
4.不完全解构
/*
*不完全解构
* 可用于 不需要初始化赋值的变量
* */
let [view = document.createElement("div"),timer] = [];
5.剩余运算符
/*
* 剩余运算符
*
* */
var [timer,...views] = [0,[document.createElement("div"),document.createElement("div")]]
console.log(views[0][0]);
6.字符串
// 字符串
let [a, b, c, d, e] = 'hello';
// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
console.log(a,b,c,d,e);
(3)对象模型解构
/*
* 对象模型 解构的基本方式
* */
let {foo,bar} = {foo:"aaa",bar:"bbb"};
console.log(foo,bar);
2.可嵌套
{
let {a:[b,c]} = {a:[22,44]};
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:"点击"},{name:"双击"}]
}
click();
console.log(ce)
3.可省略
let {key:[]} = {key:[2,3]}
let {key:[]} = {key:[2,3],key2:"dfghj"}
let {} = {key:[2,3]}
4.剩余运算符
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
// a = 10
// b = 20
// rest = {c: 30, d: 40}