談談神祕的ES6——(三)ES6的函數

談談神祕的ES6——(三)ES6的函數

 ES6函數的改變不算太大,都是一些其餘語言早就有的功能,而Javascript一直比較欠缺的,好比函數參數默認值,任意參數的表示法,最大的變化應該是支持箭頭函數(其餘語言稱之爲LAMBDA表達式),一種對匿名函數的一種簡寫方式。javascript

箭頭函數()=>{}

箭頭函數的本質是方法函數的一種簡寫,不須要function關鍵字來建立函數,它能夠省略return關鍵字,當只有一個參數是,能夠省略(),若是隻有一個return,能夠省略{}。具體來看看代碼:java

function square(n){
    return n*n;
}

//等價於

let square = n => n*n;

默認參數

在ES5咱們給函數定義參數默認值是怎麼樣?數組

function action(num) {
   num = num || 200
   //當傳入num時,num爲傳入的值
   //當沒傳入參數時,num即有了默認值200
   return num
}

但當,num傳入爲0的時候就是false, 此時num = 200 與咱們的實際要的效果明顯不同。微信

ES6爲參數提供了默認值。在定義函數時便初始化了這個參數,以便在參數沒有被傳遞進去時使用。app

function action(num = 200) {
    console.log(num)
}
action() //200
action(300) //300

不定參數(Rest Parameter)

在函數命名參數前添加...三個點代表這是一個不定參數。函數

這是一個相似C#的params object參數,放在最後一個形參,用來收集剩餘的參數。學習

function pick(obj, ...keys) {
  let result = Object.create(null)
  for (let i = 0, len = keys.length; i < len; i++) {
    result[keys[i]] = object[keys[i]]
  }
  return result
}

其實,它還能夠用來展開數組,咱們來看一下:spa

Math.max可接受任意數量的參數並返回最大的那個,但若是傳入的是一個數組,則只能使用apply。code

console.log(Math.max(11, 2, 3, 12, 43, 904, 3543, 43))
let values = [11, 2, 3, 12, 43, 904, 3543, 43]
console.log(Math.max.apply(Math, values))

使用展開運算符就變得特別簡單了。視頻

let values = [11, 2, 3, 12, 43, 904, 3543, 43]
console.log(Math.max(...values))

                                                                                                       

若是想跟着振丹繼續學習,能夠微信關注【振丹敲代碼】(微信號:JandenCoding)

新博文微信同步推送,還附有講解視頻哦~

也可直接掃描下方二維碼關注。

相關文章
相關標籤/搜索