ECMAScript-----(一)变量的解构赋值
想到变量赋值大家会怎么赋值?是不是这样:?
let a = 1; let b = 2; let c = 3;
这样非常麻烦,现在,ES6允许被写成这样:
let [a,b,c] = [1,2,3]
本质上,这种赋值方式属于”模式匹配“,只要左右两边的格式相同,那么左边的变量就可以赋上对应位置的值
下面是使用嵌套数组进行解构赋值的例子:
let [a, [[b]a, c]] = [1, [[2], 3]]; console.log(a+"---"+b+"---"+c); //1---2---3
let [a, ...b] = [1, 2, 3, 4]; console.log(a+"---"+b); //1---[2,3,4]
let [a,b,...c] = ["111"] console.log(a+"---"+b+"---"+c); //111---undefined---[]
下面是对于对象的解构赋值:
let {foo, bar} = {foo: "isFoo",bar: "isBar"} console.log(foo+"---"+bar); //isFoo---isBar
let {x, y = 4} = {x:1} console.log(x+"---"+y); //1---4
let {x = 3} = {x: undefined}; console.log(x); //3 let {x = 3} = {x: null}; console.log(x); //null //node:默认值生效的条件是属性值严格等于undefined
下面是对于字符串解构赋值的例子:
const [a,b,c,d,e] = "hello"; console.log(a+"---"+b+"---"+c+"---"+d+"---"+e); //h---e---l---l---o
let {length: len} = "hello"; console.log(len); //5 //node:类似数组的对象都有一个length属性,可以对这个属性进行解构赋值
解构赋值的用途:
(一)交换两变量的值:
let [x, y] = [1,2]; [x, y] = [y, x]; console.log(x+"---"+y); //2---1
(二)从函数返回多个值
//返回一个数组 function demo() { return [1,2,3] } let [a,b,c] = demo(); console.log(a+"---"+b+"---"+c); //1---2---3
//返回一个对象 function demo() { return { a:1, b:2, c:3 } } let {a,b,c} = demo(); console.log(a+"---"+b+"---"+c); //1---2---3
(三)提取JSON数据
let obj1 = { name: "章珊", sex: 1, habbits: ["swimming", [1, 2],[3,4]] }; let {name, sex, habbits} = obj1; console.log(name+"---"+sex+"---"+habbits); //"章珊"---1---[swimming,1,2,3,4]