参数和函数形参 到 解构和不完全解构

函数的参数和形参

声明一个有三个形参的函数 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的话,可以去看下专业书籍。

 

posted @ 2017-07-24 22:24  黑夜蓝天  阅读(588)  评论(0编辑  收藏  举报