gpt4 book ai didi

javascript - 这个例子中的论点在哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 05:00:59 25 4
gpt4 key购买 nike

我目前正在阅读 Mostly Adequate Guide on functional programming, chapter 2 .

这里给出了下面的例子

var getServerStuff = function(callback) {
return ajaxCall(function(json) {
return callback(json);
});
};

然后重构为:

var getServerStuff = ajaxCall;

在解释重构时,作者认为

return ajaxCall(function(json) {
return callback(json);
});

相同
return ajaxCall(callback);

虽然我知道 ajaxCall 是用匿名函数的返回值调用的(这只是 callback 的返回值),但我不明白重构版本应该可以工作 - json 参数去哪儿了?我错过了什么?

最佳答案

问题已得到解答,但我认为一些粗体删除线 可以很容易地看到代码转换。希望这个答案可以帮助任何正在努力想象问题的人。


你不会写......

var floor = function(x) { return Math.floor(x) }

相反,你会写......

var floor = Math.floor

…它的工作原理完全一样。这称为 Eta Conversion如果您重复两次,您将看到 Brian 如何在“最合适的指南”中得出他的结果。

Eta转换的基本规则是这样的:

<b>function(x) { return</b> f<b>(x) }</b> === f

……它们完全可以互换


您可以在原始代码中使用相同的技术

var getServerStuff = function(callback) {
return ajaxCall(function(json) {
return callback(json)
})
}

先看看……

return ajaxCall(<b>function(json) { return</b> callback(<b>json</b>) <b>}</b>)

Eta 转换表示......

<b>function(json) { return</b> callback<b>(json) }</b> === callback

那么让我们看一下带有第一次 eta 转换结果的整个代码......

// first step
var getServerStuff = function(callback) {
return ajaxCall(<s>function(json) {</s>
<s>return </s>callback<s>(json)</s>
<s>}</s>)
}

// eta converts to ...
var getServerStuff = function(callback) {
return ajaxCall(callback)
}

我们应该觉得这种情况很熟悉。再进行一次 eta 转换将使我们得到最终的简化形式。我会再添加一次粗体,这样我们可以看得更清楚

Eta 转换表示......

<b>function(callback) { return</b> ajaxCall<b>(callback) }</b> === ajaxCall
// second step
var getServerStuff = <s>function(callback) {</s>
<s>return </s>ajaxCall<s>(callback)</s>
<s>}</s>

// eta converts to ...
var getServerStuff = ajaxCall

无论出于何种意图和目的,它们都是可以互换的。 MoSTLy Adequate Guide to FP 很少关注动态绑定(bind)或使用 this

关于javascript - 这个例子中的论点在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com