1. 程式人生 > >函數的擴展

函數的擴展

arr timeout 部分 默認 個數 const con 擴展 clas

一、為函數參數指定默認值
function fn(a, b){
  a = a || 10;
  b = b || 20;
  console.log(a + b);
} // es5寫法
 
function fn(a = 10, b = 20){
  console.log(a + b);
} // es6寫法
二、函數的 rest 參數 參數形式為(“...變量名”),用於獲取函數的多余參數,這樣就不需要使用arguments對象了。rest 參數搭配的變量是一個數組,該變量將多余的參數放入數組中。
function add(...values) {
   let sum = 0;
 
   for (var val of values) {
      sum + = val;
   }
 
   return sum;
}
 
add(2, 5, 3)// 10
三、箭頭函數
[1, 2, 3].map(function(x) {
    return x * x;
})
 
 
1、規則 --如果箭頭函數不需要參數或需要多個參數,就使用一個圓括號代表參數部分。
var sum = (num1, num2) => num1 + num2; 
--如果箭頭函數的代碼塊部分多余一條語句,就要使用大括號將它們括起來,並且使用return語句返回。
 var sum = (num1, num2) => { return x+ y;}
--大括號被解釋為代碼塊,所以如果箭頭函數直接返回一個對象,必須在對象外面加上括號。 2、註意事項 -- 箭頭函數體內沒有自己的this對象,所以在使用的時候,其內部的this就是定義時所在環境的對象,而不是使用時所在環境的對象。
 function fn(){
    setTimeout(function (){
        console.log(this);
    }, 1000);
    setTimeout(() => {
        console.log(this);
    },1000);
}
 
var obj = {a: 1};
 
fn.call(obj);
-- 箭頭函數體內沒有arguments對象,如果要用,可以用Rest參數代替。
const fn = (...arr) => arr;
 
console.log(fn(1, 2, 3, 4));
-- 不可以當作構造函數,不可以使用new命令,否則會拋出一個錯誤。
const Fn = (a, b) => a + b;
 
const f = new Fn(1, 2);
 

  

函數的擴展