閱讀319 返回首頁    go 人物


js基礎

1 箭頭函數

  • 1: 沒有this,super,arguments和new.target綁定,箭頭函數中的 this,super,arguments和new.target這些值由外圍最近一層非箭頭函數決定,
  • 2: 不能通過new關鍵字調用, 箭頭函數沒有[[]Construct]方法,所以不能作為構造函數,如果用了new就會拋出錯誤.
  • 3: 沒有原型,由於不能通過new構造,因而沒有構造原型的需求,所以箭頭函數不存在prototype這個屬性
  • 4: 不可以改變this的綁定,函數內部的this值不可以改變,在函數的生命周期內始終保持一致.
  • 5: 不支持 arguments對象,箭頭函數沒有arguments綁定,所以你必須通過明明函數和不定參數這兩種形式訪問函數的參數.
  • 6: 不支持重複的命名參數 無論嚴格參數還是非嚴格模式下,箭頭函數都不支持重複的命名參數
  • 7: 箭頭函數同樣也有一個name屬性,這與其他函數相同.
  • 8: 箭頭函數的設計初衷是: 即用即棄, 箭頭函數內的this也不能通過call apply bind來改變.但是可以在箭頭函數上調用call apply bind方法,與其他函數不同,箭頭函數的this值不會受這些方法的影響
var sum = (num1,num2) => num1+num2;
print(sum.call(null,1,2))
print(sum.apply(null,[1,2]))
var boundSum = sum.bind(null,1,2)
print(boundSum())

2 ES6中尾遞歸優化: 滿足以下條件,尾調用不再創建新的棧幀,而是清除並重用當前棧幀

  • 1: 尾調用不訪問當前棧幀的變量(也就是說函數不是一個閉包)
  • 2: 在函數內部,尾調用是最後一條語句
  • 3: 尾調用的結果作為函數值返回

最後更新:2017-10-21 18:03:21

  上一篇:go  Joomla行業解決方案
  下一篇:go  對未來的想法