解释";您可以具有改变其他功能的功能"
Explain "you can have functions that change other functions"
我正在阅读Eloquent JavaScript,在第5章中遇到了这个问题
您可以使用创建新函数的函数。
function greaterThan(n) { return function(m) { return m > n; }; } var greaterThan10 = greaterThan(10);
你可以用一些函数来改变其他函数。
function noisy(f) { return function(arg) { console.log("calling with", arg); var val = f(arg); console.log("called with", arg, "- got", val); return val; }; } noisy(Boolean)(0); //->calling with 0 //->called with 0 - got false
我的问题是:
- 以上两个例子有何不同
- 有噪如何更改布尔
区别在于noisy
的参数是另一个函数,而不是像数字这样的"普通"值。因此,是的,它创建了一个新的匿名函数,就像greaterThan
一样,但它是对现有函数的包装,可以修改其行为。
在这种情况下,包装器只是在调用原始函数f
之前和之后记录一些消息。但您可以做其他事情,比如修改它的参数或返回值。例如,您可以实现分部函数应用程序,它允许您在程序中的某个点为函数调用提供一些参数,并在以后只接受剩余参数的新函数中"记住"这些参数。
以上两个例子有何不同?
greaterThan
接受一个参数n
,该参数将是一个数字。
noisy
接受一个参数f
,该参数旨在成为一个函数,然后可以在其中调用
在greaterThan
只计算一个数字的情况下,noisy
更灵活,因为它可以接受任何函数并执行它
噪声如何改变布尔值?
noisy
返回一个匿名函数,该函数在将结果存储在名为val
的变量中的行中评估Boolean
。
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何防止网页加载后自动启动功能
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- 如何分解jQuery"toggle”;函数转换为separate“;显示“;以及“;隐藏“;功能
- JavaScript美学:;函数foo(){}"vs“;var foo=函数(){}"AMD功能
- JQuery动画完整功能:如何恢复我的"老这个”;
- "键未定义”;在AngularJS'的自定义筛选功能
- "Ghost"ng点击功能
- "未捕获的类型错误:无法读取属性'名称'未定义的“;当触发一个功能时
- "未定义不是函数“;在.to Be功能
- 如何用更多的"期望“;功能
- 如何获取javascript"链接旋转器”;从身体到部门的功能
- 按钮“”的onclick功能;搜索书籍"是't工作是因为我没有;没有收到任何警报..没有调用函数Sen
- jQuery"isHTML5Error”-类似功能
- jquery“.when"美元;功能没有按预期工作
- 使onclick功能与ENTER一起工作;Go"Safari Mobile(iOS)上的按钮
- 如何做facebook API登录使用锚标签链接使用Javascript功能?给定在<a href="&q