JavaScript解构赋值

1、解构赋值

* 左右结构要相同

  • 数组
    一般的赋值方法是对单个变量进行赋值,现在可以对多个变量以相同的结构赋值,按顺序赋值
let [a, b] = [1, 2]
console.log(a, b) //1 2

此时左右同为数组结构,因为右边为数组,左边赋值的时候需要写出类似的结构,变量a,b是当前作用域的变量

  • 剩余参数 rest
let [a, ...b] = [1,2,3,4,5,6]
console.log(a,b) // 1 [2,3,4,5,6]
let [c, ...d] = [7]
console.log(c,d) // 7 []

其中b是将剩余的参数全部拿到了,所以是一个数组,如果拿不到就是undefined,数组 d 就是空数组

  • 默认值
    如果
    1.匹配到的值是undefined
    2.有默认值,则是默认值
let [,b=1,c=2] = ['a', 'b']
console.log(b,c) // 'b' 2
let [x=1, y=x] = [2]
console.log(x,y) // 2 2
  • 对象
    对象解构赋值时赋值对象的属性值,所以匹配的时候需要对象的属性名相同。
let {name, age} = {age=18, name='name'}
console.log(name,age) // 'name' 18

如果是变量名与属性名不一致,则结构上需保证两边的属性名匹配

let {
	name: myName,
	age: myAge
} = {
	name: 'name',
	age: 18
}
console.log(myName,myAge) // 'name' 18
  • 函数传参解构赋值
function add([a=0,b=0]){
	return a + b
}
add([1,2,3,4]) // 3

2、扩展运算符

扩展运算符spread(…)
将…后面的参数拆分开使用或者赋值,…后面跟数组,接受参数的时候…后面是最后一个参数

function fn(...arr){
	for(let i = 0; i < arr.length; i++){
		console.log(arr[i])
	}
}
fn(1,2,3,4,5) // 1 2 3 4 5
let [a, ...b] = [1,2,3,4,5]
console.log(a,b) // 1 [2,3,4,5]
function foo(x,...y){
    console.log(x,y);
} 
foo(...[1,...[2,3],5,...[6,7]]) // 1 [2,3,5,6,7]

合并数组

let a = [1, 2]
let b = [3, 4]
let c = a.concat(b) // [1,2,3,4]
let d = [...a,...b] // [1,2,3,4]

拆分字符串

let str = 'abc'
let arr1 = str.split('') // ['a', 'b', 'c']
console.log([...str])  // ['a', 'b', 'c']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值