javascript-这种模式f(a)(b)(c)叫什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-这种模式f(a)(b)(c)叫什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1943字,纯文字阅读大概需要3分钟。
内容图文
![javascript-这种模式f(a)(b)(c)叫什么?](/upload/InfoBanner/zyjiaocheng/680/f86392123d754eba8e8c5e228d3c9fb2.jpg)
function setStyle(x) {
with (x.style) {
padding = '10px'
marginBottom = '10px'
width = '100%'
}
return setStyle
}
setStyle(account)(password)(login)
我经常使用上面的模式,但是当我需要谈论它时,我不知道它叫什么?在对话中如何提及这种方式?
更新:
有人以重复的形式结束了这个问题,但我看不到为什么是重复的.另一个问题是关于某些框架的信息,发布者正在尝试理解代码.我不试图理解代码,而是询问有关已知模式的英文术语.即使讨论的概念相同,问题也有所不同.就像说“ Jasckson’s Five中最年轻的人”和“ Whoose Album是Thriller”这两个问题一样,只是因为它碰巧是同一个人.但是这些是不同的问题,不尽相同.
解决方法:
这种模式不是“函数链接”,因为链接的(=组成的,流水线化的)函数通过将一个函数的结果作为参数传递给下一个函数来工作.例如,如果您有以下内容:
str = removeBadChars(str)
str = makeLowerCase(str)
str = convertToURL(str)
您可以更简洁地重写为
str = chain(removeBadChars, makeLowerCase, convertToURL)(str)
(练习:写chain()).
您的模式似乎没有名称,可能是因为它毫无用处.克罗克福德先生coined这个词是“
但它似乎并未得到广泛使用.
请注意,这种模式本质上是反功能的,因为在函数式编程中,我们更喜欢使用纯函数,而“递归”函数只能做任何有用的副作用.
UPD:这种推理适用于仅盲目地返回自身的函数,例如在您的示例中,但是f()()()语法也可以与在每次调用时返回其他内容的函数一起使用.在这种情况下,“ root”功能接受用于携带状态的隐藏参数(“ accumulator”).这种方法的一个很好的例子是上面的chain(),但是以适用的样式编写:chain(func1)(func2)(func3):
function chain(f, fun) {
fun = fun || function(x) { return x };
if(typeof f != "function")
return fun(f);
return function(x) {
return chain(x, function(y) { return f(fun(y)) })
}
}
// Example:
makeLowerCase = function(str) { return str.toLowerCase() };
removeBadChars = function(str) { return str.replace(/\W/g, "") };
makeURL = function(str) { return "http://" + str };
funcs = chain(makeLowerCase)(removeBadChars)(makeURL);
x = funcs('!!! HELLO ???');
alert(x);
在这种情况下,此语法用于实现“部分应用程序”,因为我们返回一个闭包,该闭包使用预定义的第二个参数再次调用根函数.
内容总结
以上是互联网集市为您收集整理的javascript-这种模式f(a)(b)(c)叫什么?全部内容,希望文章能够帮你解决javascript-这种模式f(a)(b)(c)叫什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。