從面試題手寫bind函式分析函式柯里化

2021-09-16 23:21:47 字數 740 閱讀 8146

這不是針對js語言,大多數語言都支援該特性

請看乙個簡單的栗子

function add(x+y)

console.log(add(3,7) //10

如果現在有乙個需求,add函式呼叫一次只能加乙個數,需要呼叫兩次才能出結果,這裡就需要用到函式柯里化 /想要了解函式柯里化最好能先對閉包有乙個深入的了解/

function add(x)

}let add1=add(3)(7)

console.log(add1) //10

可以看出函式柯里化就是是利用了閉包的特性,

所以以後在看**中看到以下的呼叫方式就不足為怪了

add(2)(3)(9)           

add(2,3,5)(4,6)(3,4)

/*

param obj 繫結的物件

*/object.prototype.mybind=function(obj,...params)

}let obj1=

}let obj2=

let result=obj1.sayhello.mybind(obj2,'hello')('world')

console.log(result) //helloworld帥朗朗

由此可見函式柯里化的主要作用和特點就是引數復用、提前返回和延遲執行。

函式面試題

面試題的理解文件 第一題 var num function fun num 18 fun 理解 結果是undefined,但是num的值為18,函式裡面的num的值為20,這串 是由上到下的循序執行的,而這裡的num如果在函式裡面則會去找自己裡面的,如果有則會使用自己裡面的num,如果沒有則會去父級...

函式面試題

var a 1 function b b console.log a 輸出 1 解析 輸出的a是window下的 function foo return bar function bar alert foo 輸出 8 解析 涉及預編譯問題,兩個方法名同名,後宣告的覆蓋之前的所以這裡輸出8 funct...

虛函式面試題

classa classb int tmain intargc,tchar argv 情況a 不是虛函式 輸出hello world,程式執行正常 情況b 有虛函式 程式直接crash 原因是 不是虛函式的情況,this指標當成第乙個引數傳入函式 一般是通過ecx暫存器 主要裡面沒有使用這個this...