javascript - 在 JavaScript 中的匿名函数中传递参数

标签 javascript

有时我会看到 JavaScript 是用一个提供的参数编写的,该参数已经有一个设定值或者是一个带有方法的对象。以这个 jQuery 示例为例:

$(".selector").children().each(function(i) {
    console.log(i);
});

登录时 i , 你会得到任何 i 的值在查看 jQuery each 中的选择器子项时处于该迭代中方法。

以这个 Node.js 为例:
http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
}).listen(8888);

你可以在这里看到 requestresponse正在被传递,并且它们包含自己的可以操作的方法。

对我来说,这看起来像是将函数传递给 createServer具有两个已附加方法的参数的函数。

我的问题是多部分的:
  • 这些论据从何而来?
  • 如果这些只是匿名函数,它们如何接收可以像其他函数一样起作用的参数?
  • 我如何创建可以像这样接受我自己的参数的函数?
  • 这是否使用了闭包的力量?
  • 最佳答案

    To me, this looks like were passing a function to the createServer function with two arguments that have methods already attached to them.



    不,他们将函数传递给 createServer这需要两个参数。稍后将使用调用者输入的任何参数调用这些函数。例如:
    function caller(otherFunction) {
         otherFunction(2);
     }
    caller(function(x) {
        console.log(x); 
    });
    

    将打印 2。

    更高级,如果这不是您想要的,您可以使用 bind方法属于所有函数,它将创建一个已绑定(bind)指定参数的新函数。例如。:
    caller(function(x) {
        console.log(x);
    }.bind(null, 3);
    });
    

    现在将打印 3,传递给匿名函数的参数 2 将成为未使用且未命名的参数。

    无论如何,这是一个密集的例子;请查看 bind 的链接文档了解绑定(bind)如何更好地工作。

    关于javascript - 在 JavaScript 中的匿名函数中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195750/

    相关文章:

    带有单个管道的 Javascript 条件语句 "|"

    javascript - 为自定义元素创建自定义 HTML 属性是一个好习惯吗?

    javascript - 当我按退格键时,逗号被插入输入框,数字没有按要求格式化

    javascript - 如何遍历 jquery HTMLElement 结果并搜索特定范围或纯文本

    javascript - socket.io 在我的 Android 手机上似乎延迟了

    javascript - 滚动两个 DIV,一个显示,另一个隐藏

    javascript - 主干 - 在 jsfiddle 控制台中访问

    javascript - 无法在 AngularJS View 上呈现 Jsonresult

    javascript - 如何将 Ramda Pipe 函数与 promise 和静态回调混合使用?

    javascript - 在搜索上显示按钮并显示相同的结果