三、解构赋值、函数默认值、数组解构、对象解构
函数传参为undefined/不传值,解构赋值时值为undefined/不传值时,都可以去取自己定义的默认值。
一、函数默认值
1.1 函数默认值
ES5语法函数参数赋默认值
function foo(a, b){
var a = typeof(arguments[0]) !== 'undefined' ? arguments[0]
: 1;
...
}
ES6语法函数参数赋默认值,相当于let声明了一个变量,在声明之前会出现暂时性死区。
function foo(x = 1, y =2){
...
}
默认值的形式:
- 值
- 表达式
举个函数参数为表达式的例子:
let a = 99;
function foo(b = a + 1){
console.log(b);
}
foo(); // 100
a = 100;
foo(); // 101
当函数参数为表达式时,会有惰性求值现象:每次调用函数时,都会重新计算表达式。
1.2 参数作用域
关于作用域:
参数有自己单独的作用域:并没有访问函数内部的作用域;相当于是一个父子作用域嵌套的关系,父:参数作用域。
let y = 1;
function