這道javascript 面試題 你必須會

來源:互聯網
上載者:User

標籤:思路   eof   array   nts   一個   fun   arguments   reduce   type   

實現一個函數,運算結果可以滿足如下預期結果:

 

add(1)(2) // 3

add(1, 2, 3)(10) // 16

add(1)(2)(3)(4)(5) // 15

話不多說,實現如下:

function add(){

  var arr=Array.prototype.slice.call(arguments)
  function fn(){
    arr=arr.concat(Array.prototype.slice.call(arguments))
    return fn
  }
  fn.valueOf=function(){
    return arr.reduce(function(a,b){
      return a+b
    })
  }
  return fn
}

思路很簡單,首先要實現調用之後還可以調用無線調用的效果必須這麼寫,function f(){return f};

實現最後的求和就必須又一個範圍,這個作用下可以把所有輸入值儲存下來,所以不是如下這樣函數

var add=(function() {
  var arr=[]
  var ad=function (){
    arr=arr.concat(Array.prototype.slice.call(arguments))
    return ad
  }
  ad.valueOf=function(){
    return arr.reduce(function(a,b){
      return a+b
    })
  }
  return ad
})()

這道javascript 面試題 你必須會

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.