|
導(dǎo)讀網(wǎng)頁的本質(zhì)就是超級文本標(biāo)記語言,通過結(jié)合使用其他的Web技術(shù)(如:腳本語言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁。因而,超級文本標(biāo)記語言是萬維網(wǎng)(Web)編程的基礎(chǔ),也就是說萬維網(wǎng)是建立... 網(wǎng)頁的本質(zhì)就是超級文本標(biāo)記語言,通過結(jié)合使用其他的Web技術(shù)(如:腳本語言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁。因而,超級文本標(biāo)記語言是萬維網(wǎng)(Web)編程的基礎(chǔ),也就是說萬維網(wǎng)是建立在超文本基礎(chǔ)之上的。超級文本標(biāo)記語言之所以稱為超文本標(biāo)記語言,是因?yàn)槲谋局邪怂^“超級鏈接”點(diǎn)。 本篇文章給大家?guī)淼膬?nèi)容是關(guān)于JavaScript實(shí)現(xiàn)柯里化(curry)函數(shù)的思路和源碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。實(shí)現(xiàn)效果 const curry_fn = curry(fn); fn(1, 2, 3) == curry_fn(1)(2)(3); 實(shí)現(xiàn)思路
源碼實(shí)現(xiàn)function curry(fn) {
var length = fn.length; //獲取原函數(shù)的參數(shù)個數(shù)
var args = []; // args存儲傳入?yún)?shù)
return function curryFn() {
// 將arguments轉(zhuǎn)換成數(shù)組
var curryArgs = Array.prototype.slice.call(arguments);
args = args.concat(curryArgs);
if (args.length > length) {
throw new Error('arguments length error')
}
// 存儲的參數(shù)個數(shù)等于原函數(shù)參數(shù)個數(shù)時執(zhí)行原函數(shù)
if (args.length === length) {
return fn.apply(null, args);
}
// 否則繼續(xù)返回函數(shù)
return curryFn;
};
}ES6版function curry(fn) {
let length = fn.length;
let args = [];
return function curryFn(...curryArgs) {
args = args.concat(curryArgs);
if (args.length > length) {
throw new Error('arguments length error')
}
if (args.length === length) {
return fn(...args);
}
return curryFn;
}
}以上就是JavaScript實(shí)現(xiàn)柯里化(curry)函數(shù)的思路和源碼的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章! 網(wǎng)站建設(shè)是一個廣義的術(shù)語,涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!