函数扩展:
1.默认值
2.length:预期传入参数的个数,一般来说对函数指定默认值都是放在最后的参数里面。
3.默认参数作用域,如果参数默认值是一个变量,则该变量所处的作用域,与其他变量的作用域规则是一样的,即先是当前函数的作用域,然后才是全局作用域
4.rest参数:搭配的变量是一个数组,该变量将多余的参数传入数组中。注意:只能是最后一个参数否则报错
5.箭头函数:基本形式()=>{...}
使用规则:
1.在只有一个形参时可以省略括号,其他情况不可以省略
2.在只有一行并且把这行的结果返回时可以省略return
3.省略花括号,在只有一行代码时,可以省略花括号
新特性:
1.argument不被支持
2.不能被new
3.this固定,始终指向函数定义时的this,而非执行时
<script>
//1.默认值
function show(a=1,b=2){
console.log(a,b);//3 2
}
show(3);
//2.length
function sum(a,b,c=3){
return a+b+c;
}
console.log(sum.length);//2
//预期传入参数,碰到第一个默认值就停止,以后参数不再计数
function sum2(a,b=2,c){
return a+b+c;
}
console.log(sum.length);//1
//3.默认参数作用域
var a=1;
function f(a,b=a){
console.log(a);//2
}
//调用时,由于函数作用域内部的变量a已经生成,所有b等于参数a,而不是全局变量a
f(2);
var a=111;
function f1(b=a){
let b=2;
console.log(b);//111
}
//调用时,b的默认值变量a尚未在函数内部生成,所以a指向全局变量
f1();
var x=1;
function f2(x=x){}
f2();//报错x is not undefined
//4.rest参数
function fn(str,...m){
let sum=0;
for(var v of m){
sum+=v;
}
console.log(str+sum);
}
fn(1,2,3,4,5);//15
//5.箭头函数
//普通函数
function m1(x){
return x+1;
}
//箭头函数
let m2=(x)=>{return x+1}
console.log(m1(1));//2
console.log(m2(1));//2
//箭头函数简洁写法
let m3=x=>x+1;
console.log(m3(1));//2
</script>