JS-函數(shù)

1.定義
(1)匿名函數(shù)
(2)具名函數(shù)
(3)箭頭函數(shù),無this

  1. 詞法作用域(也叫靜態(tài)作用域)
    JS看到上面的代碼不是立馬去執(zhí)行,而是去構造詞法樹,也就是一個函數(shù)能訪問那些變量在做詞法分析的時候就以及確定了。詞法作用域只能確定變量是那個變量,但是不能確定變量的值。

  2. call stack
    (1) 普通調用 1+1+1
    (2) 嵌套調用 1>2>3
    (3) 遞歸

  3. this & arguments
    (1) this 就是 call 的第一個參數(shù)!call 的其他參數(shù)統(tǒng)稱為 arguments
    (2) this 是隱藏的第一個參數(shù),且一般是對象(如果不是對象,就顯得很沒有意義了)。那么this 為什么必須是對象?即使傳入的不是對象,比如是數(shù)字,也會被new Number一下,變成一個對象,因為 this 就是函數(shù)與對象之間的羈絆。

  4. call / apply
    (1)fn.call(asThis, p1,p2) 是函數(shù)的正常調用方式。
    (2)當你不確定參數(shù)的個數(shù)時,就使用 apply,fn.apply(asThis, params)
    (3)也就是確定參數(shù)個數(shù)的時候使用call,不確定參數(shù)個數(shù)的時候使用apply,這也是它們倆的區(qū)別。比如當我們去遍歷一個數(shù)組求和,就算數(shù)組很小,但是使用call的話就如:sum.call(undefined, a[0],a[1],a[2]...),這個寫就顯得很智障了。
    (4)若單獨的函數(shù)(fn)沒有依賴于對象,當調用fn.call()的時候,不傳參數(shù),this就是window,傳了參數(shù)this就是call的第一個參數(shù),一般不想指定this,可以使用undefined來占位,否則就會出現(xiàn)把我們想傳的參數(shù),默認第一個為this了。

  5. bind
    call 和 apply 是直接調用函數(shù),而 bind 則是返回一個新函數(shù)(并沒有調用原來的函數(shù)),這個新函數(shù)會 call 原來的函數(shù),call 的參數(shù)由你指定。

  6. return
    每個函數(shù)都有 return。如果你不寫 return,就相當于寫了 return undefined。

  7. 柯里化 / 高階函數(shù)
    (1)

  //柯里化之前
  function sum(x,y){
      return x+y
  }
  //柯里化之后 ,類似于偏函數(shù)
  function addOne(y){
      return sum(1, y)
  }

柯里化可以將真實計算拖延到最后再做:柯里化大多數(shù)是在模板引擎里面使用,大部分是用來惰性求值,如調用一個函數(shù)什么都沒做,就是return了一個函數(shù)。若對一個字符串做很重的操作,如正則,ajax,要是直接聲明就調用就顯得麻煩,那么就可以在真正使用的時候再去調用,如在第二次調用的時候才生效,這樣就是惰性求值。
(2)高階函數(shù):
在數(shù)學和計算機科學中,高階函數(shù)是至少滿足下列一個條件的函數(shù):

  • 接受一個或多個函數(shù)作為輸入:如forEach sort map filter reduce。
  • 輸出一個函數(shù):如lodash.curry。
  • 不過它也可以同時滿足兩個條件:如Function.prototype.bind。
  1. 回調
    名詞形式:被當做參數(shù)的函數(shù)就是回調,還有一個隱含條件就是,這個被當作參數(shù)的函數(shù)得call一下,這個call就是callback,若不call就不是callback了。
    動詞形式:調用這個回調。
    注意回調跟異步沒有任何關系。

  2. 構造函數(shù)
    返回對象的函數(shù)就是構造函數(shù),一般首字母大寫。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容