這道javascript 面試題 你必須會
阿新 • • 發佈:2017-10-30
fun prot 試題 concat 作用 val function 運算 return
實現一個函數,運算結果可以滿足如下預期結果:
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 面試題 你必須會