您的位置:首页 > 其它

【es6】【变量的解构赋值】【字符串,数值和布尔值解构】【函数参数的解构赋值】【用途】

2018-01-23 16:45 1116 查看

字符串的解构赋值

const [a,b,c,d,e] = "nihao"; //此时字符串被转换成一个类似数组的对象

let {length: len} = "nihao";//****

len // 5

a // "n"

b // "i"

c // "h"

d // "a"

e // "o"

数值和布尔值的解构赋值

let {toString:s} = 123;
s === Number.prototype.toString // true
let {toString:s} = true;
s === Boolean.prototype.toString // true

-----------------------
因为,数值和布尔值的包装对象都有toString属性,所以,以上会返回true
-----------------------
let { prop: x } = undefined;
let { prop:y } = null;
以上都会报 TypeError,null和undefined无法转变为对象

函数参数的解构赋值

let move = function ([x,y]) { 
  return x + y;
}
move([1,2]);// 3

用途

1,交换变量的值
let x = 1;
let y = 2;
[x,y] = [y,x];
2,取出函数返回对象和数组里的值
function ahv() {
  return [1,2,3];
}
 let [a,b,c] = ahv();
---------------------
function ahv1() {
  return {
  foo:1,
  bar:2,
};
}
let { foo:xlfd,bar:lxh } = ahv1();
3,定义函数参数
 function f([x,y,z]) { ... }
 f([1,2,3]);

 f([z:3,y:2,x:1]);
4,提取JSON数据
let jsonData = {
  id:42,
  status:"200",
  data:[658,786]
};
let { id,status,data:number } = jsonData;
5,遍历Map结构
const map = new Map();
map.set('first','nihao');
map.set('second','sijie');

for (let [key,value] of map) {
  console.log(key + "是" + value);
}
// first 是 nihao
// second 是 sijie
----------------
也可以单独获取键名或键值
----------------------
 for (let [key] of map) {
...
}

 for (let [ , key ] of map) {
...
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: