函数
函数形参的默认值
function fn(x = 'abc'){
}
fn();
//abc
//以前的做法
function fn(x){
if(x === undefined){
x = 'abc';
}
console.log(x);
}
注:
- 使用解构赋值,可以使用解构的方式设置默认值,也可同时使用
- 一般将设置默认值的形参放在最后面
函数的length属性
函数的length属性指的是无默认值形参的总数。
function fn(x,y = 1){};
fn.length;
//1
扩展运算符
“ ”将数组转换成以逗号分隔的序列。
var arr = [1,2,3];
console.log(...arr);
//1,2,3
应用:
1 . 函数调用时使用此运算符展开数组,传递实参
function fn (a,b){
console.log(a*b);
}
var arr = [1,2];
fn(...arr);
//3
注:ES6之前使用apply方式调用函数,批量传入参数
fn.apply(null,arr);
//3
2 . 合并数组
var arr1 = [1,2,3];
var arr2 = [4,5];
var arr = [...arr1,...arr2];
//[1,2,3,4,5]
//es5写法
var arr = arr1.concat(arr2);
3 . 解构赋值上的使用
...value
放在末尾,用来接收多余的参数,是个数组
const [a,...b] = [1,2,3];
b;
//[2,3]
函数形参也可以使用此方式获取多余参数
function fn(...value){
console.log(values)
}
fn(1,2,3);
//[1,2,3]
es6之前arguments获取多余参数
箭头函数
箭头函数用来简写函数,形式(形参)=>{函数体}
var fn = (a,b)=>{
return a+b
};
//等同于
var fn = function(a,b){
return a+b;
}
1.当形参只有一个时()可省略
var fn = a=>{return a+1};
- 当函数体只有一个语句时,可省略{},此时语句的值会被return
var fn = a=>a+1;
注意: - 函数体的this指向函数定义时所在的对象
var obj={
fn:function(){
setInterval(()=>{
console.log(this)
},1000)
}
}
obj.fn();
//{fn:f}即为obj
//非箭头函数,指向window
var obj={
fn:function(){
setInterval(function(){
console.log(this)
},1000)
}
};
obj.fn();
//window
- 不可使用arguments对象;
- 不可使用yieid命令,不能用作Generator函数;
4.箭头函数没哟自己的this,所以不能使用bind,call,apply