函數
函數形參的默認值
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