我需要在Javascript闭包中指定参数吗

我需要在Javascript闭包中指定参数吗,javascript,closures,Javascript,Closures,您正在尝试创建一个自动执行的匿名函数,该函数返回一个设置为“add”的函数定义。更好(且不那么混乱)的方法是将函数定义为: var add = (function(x) { .... }() 您正在尝试创建一个自动执行的匿名函数,该函数返回一个设置为“add”的函数定义。更好(且不那么混乱)的方法是将函数定义为: var add = (function(x) { .... }() 因为您没有传递任何参数: var add = function(x) { //Do things }

您正在尝试创建一个自动执行的匿名函数,该函数返回一个设置为“add”的函数定义。更好(且不那么混乱)的方法是将函数定义为:

var add = (function(x) {
....
}()

您正在尝试创建一个自动执行的匿名函数,该函数返回一个设置为“add”的函数定义。更好(且不那么混乱)的方法是将函数定义为:

var add = (function(x) {
....
}()

因为您没有传递任何参数:

var add = function(x) {
    //Do things
}

此自调用函数返回另一个函数。该函数(返回函数)接受参数
x

,因为您没有传入任何参数:

var add = function(x) {
    //Do things
}

此自调用函数返回另一个函数。就是那个函数(返回的函数),它接受参数
x

考虑匿名函数,比如生成函数的函数(在本例中)。那么,您是否需要知道
x
才能生成使用参数
x
的函数?基本上没有,因为您只需要知道您在匿名函数中创建的函数何时被实际调用。

将匿名函数视为生成函数的函数(在本例中)。那么,您是否需要知道
x
才能生成使用参数
x
的函数?基本上,不需要,因为您只需要知道您在匿名函数中创建的函数何时被实际调用。

这是不等价的:问题中的代码使用“counter”作为累加器变量,并且它位于闭包中,因此除了add函数外,没有人可以访问它。在您的代码中,您必须声明一个全局变量,该变量可以被任何其他代码修改。这是不等价的:问题中的代码使用“counter”作为累加器变量,并且它位于闭包中,因此除了add函数之外,没有人可以访问它。在您的代码中,您必须声明一个全局变量,该变量可以被任何其他代码修改。您的解释非常棒,非常好,并且易于理解!你的解释很好,很好,很容易理解!