這不是針對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...