函数扩展
1.函数参数的默认值
ES6之前,不能为函数的参数设置默认值,只能在代码中进行判断
function show(a,b){
if(typeof b === "undefined"){
b = 0;
}
console.log(a,b);
}
show(1);
ES6的写法
function show(a,b=0){
console.log(a,b);
}
show(1);
设置默认值的参数应该在函数的最后面,否则默认值设置是无效的。
function show(a=0){
console.log(a,b);
}
show(1)//1 undefined
函数的length属性为函数的参数个数。若设置了默认值,length的计数中是不计算设置了默认值的参数的。
作用域
一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域。
等到初始化结束,这个作用域就会消失。
var a = 1;
function fn(a,b = a){
console.log(b);
}
fn(2)//2
let a = 1;
function fn(b = a){
let a = 2;
console.log(b);
}
fn();//1
函数调用中,(b=a)是一个单独的作用域,a变量不存在,则会去外部寻找。
2.rest参数
2.1 基本用法
function add(...v){
for (var i = 0; i < v.length; i++) {
console.log(v[i])
}
}
add(2,1,3)
rest参数必须是最后一个正式参数。
//错误写法
function add(...v,a){
}