参数和函数形参 到 解构和不完全解构
函数的参数和形参
声明一个有三个形参的函数 where
function where(a,b,c){ ... }
而我们调用的时候执行
where(1,2,3,4,5){....}
此时参数 1、2、3会分别赋值给 a、b、c,参数4、5则不会赋值给任何形参。但是我们已让可以通过 隐式参数 arguments 去得到他们。
再来看下ES6中的解构。
设么是解构:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
let [a, b, c] = [1, 2, 3];
a // 1
b // 2
c // 3
上面例子表示,可以从数组中提取值,按照对应位置,对变量赋值。
本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
如果解构不成功,变量的值就等于undefined
。
我只是觉得解构这点与函数的实参形参这块,有一些相似,就简单记录下,当然各位想去更深入的了解ES6的话,可以去看下专业书籍。
FUCKING FRONT-END DEVELOPMENT