不使用 Plus Babel 技巧的可變柯里求和
JavaScript 可以建立一個如下所示的 sum 函數嗎?
sum(1)(2) = 3 sum(1)(2)(3) = 6 sum(1)(2)(3)(4) = 10
人們錯誤地認為這是不可能的。不過,利用運算子結合 sum 是可行的。
解:
function sum(n) { var v = function(x) { return sum(n + x); }; v.valueOf = v.toString = function() { return n; }; return v; } console.log(+sum(1)(2)(3)(4));
關鍵在於 valueOf 和 toString 方法的定義柯里化函數。這些方法規定了函數在強制轉換為原始值(例如數字)時的行為。透過在這些方法中傳回 n,我們確保保留柯里化函數的內部狀態(當前總和)。
此技術可以在不依賴 babel 技巧的情況下建立可變參數柯里化求和函數。
以上是如何在不使用 \' \' Babel 技巧的情況下建立 JavaScript 中的可變柯里求和函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!