首页 > 代码库 > es6 变量的解构赋值
es6 变量的解构赋值
一、数组的解构赋值
数组解构赋值,索引很重要,即顺序很重要
1、解构[1,2,3]
//把1,2,3分别赋值给a,b,c var [a,b,c]=[1,2,3]; console.log(a+‘ | ‘+b+‘ | ‘+c);//1 | 2 | 3
2、更复杂,更强大的赋值,解构[1,[2,3]]
//把1,2,3分别赋值给a,b,c var [a,[b,c]]=[1,[2,3]]; console.log(a+‘ | ‘+b+‘ | ‘+c);//1 | 2 | 3
3、跳着赋值
//把1赋值给a,3赋值给c var [a,,c]=[1,2,3]; console.log(a+‘ | ‘+c); //1 | 3
4、省略号
//把1赋值给a;2,3赋值给b var [a,...b]=[1,2,3]; console.log(a+‘ | ‘+b);//1 | 2,3
5、指定默认值
//给c和d设置默认值为default var [a,b,c=‘default‘,d=‘default‘]=[1,2,3]; console.log(a+‘ | ‘+b+‘ | ‘+c+‘ | ‘+d);//1 | 2 | 3 | default
6、解构时未赋值的变量值为undefined
//给c和d设置默认值为default var [a,b,c]=[1,2]; console.log(a+‘ | ‘+b+‘ | ‘+c);//1 | 2 | undefined
优点:代码简单,清晰
二、对象的解构赋值
对象解构赋值,顺序不再重要,按名称解构
1、把a和b提取出来变成变量
let obj={ a:1, b:2 } let {a,b}=obj; console.log(a+" | "+b);//1 | 2
2、重命名,把obj.a重命名为A
let obj={ a:1, b:2 } let {a:A,b}=obj; console.log(A+" | "+b);//1 | 2 console.log(a);//Uncaught ReferenceError: a is not defined
3、let声明已经定义的变量会报错
let obj={ a:1, b:2 } let a;//a已经定义了,后面再定义就会报错 let {a,b}=obj;//Uncaught SyntaxError: Identifier ‘a‘ has already been declared console.log(a+" | "+b);
4、如果给已经定义的变量,重新解构赋值?
如果只是如下赋值:会报错,js解析器遇到{}会当成代码块,所以解构赋值时{不能出现在一行的最前面。
{a,b}=obj;//Uncaught SyntaxError: Unexpected token =
用小括号括起来
let obj={ a:1, b:2 } let a=0;//a已经定义 console.log(a); ({a,b}=obj);//用小括号括起来告诉js解析器这是条语句 console.log(a+" | "+b);//1 | 2
5、更复杂的情况
let obj={ arr:[ ‘lxy‘, { a:1 } ] } //复杂解构 let {arr:[name,{a}]}=obj; console.log(name+" | "+a);//lxy | 1
6、对象解构默认值
let {a=1,b=2}={a:10}; console.log(a+" | "+b);//10 | 2
7、a重命名之后指定默认值
let {a:A=1,b=2}={a:10}; console.log(A+" | "+b);//10 | 2
8、项目中应用
//假设res为一个请求返回的结果 let res={ status:200, id:12, data:[{name:‘Bob‘},{name:‘Shuang Dan‘}] } //es6一行搞定 let {status,id,data}=res; //es5 var status=res.status; var id=res.id; var data=http://www.mamicode.com/res.data;
9、解构函数,即解构对象的方法
比如Math对象里面有方法
let {floor,pow}=Math;//把Math里的方法提取出来变成一个变量 let a=1.1; console.log(floor(a));//1 console.log(pow(2,3));//8
三、其他
1、用解构的方式获取到字符串的长度
【想不到】
var {length}=‘lxy‘; console.log(length);//3
2、把字符串解构成数组
var [a,b,c]=‘lxy‘; console.log(a+"|"+b+"|"+c);//l|x|y
3、对函数的传参进行解构
//数组形式 var arr=[1,2]; function fun([a,b]){ console.log("a:"+a); console.log("b:"+b); } fun(arr); //a:1 //b:2
//解构对象var obj={a:1,b:2}; function fun({a,b}){ console.log("a:"+a); console.log("b:"+b); } fun(obj); //a:1 //b:2
4、简化默认值
a=a||10;
var obj={b:2}; function fun({a=10,b}){ //a=a||10; //es5默认值写法 console.log("a:"+a); console.log("b:"+b); } fun(obj); //a:10 //b:2
本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/6919627.html有问题欢迎与我讨论,共同进步。
es6 变量的解构赋值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。