Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当方法具有同名参数时访问闭包变量_Javascript - Fatal编程技术网

Javascript 当方法具有同名参数时访问闭包变量

Javascript 当方法具有同名参数时访问闭包变量,javascript,Javascript,考虑以下代码: function() { var a = "Hello World"; function foo(a) { alert(a); } } 这将打印传递给foo的值 如何访问闭包中定义的a变量,以便打印“Hello World”?您不能,因为它在函数范围中被重写。我也不明白为什么这样的构造会有用。至少可以说,这很令人困惑只需更改参数或变量名。您不能更改,因为它在函数范围内被重写。我也不明白为什么这样的构造会有用。至少可以说,这很令人困惑只需更改参数或变量名。如

考虑以下代码:

function() {
  var a = "Hello World";

  function foo(a) {
    alert(a);
  }
}
这将打印传递给
foo
的值


如何访问闭包中定义的
a
变量,以便打印“Hello World”?

您不能,因为它在函数范围中被重写。我也不明白为什么这样的构造会有用。至少可以说,这很令人困惑只需更改参数或变量名。

您不能更改,因为它在函数范围内被重写。我也不明白为什么这样的构造会有用。至少可以说,这很令人困惑只需更改参数或变量名。

如果在声明变量时不使用
var
,它将是全局变量,您可以通过
窗口访问它。a
。如果外部函数被绑定到窗口对象,这也可以工作


顺便说一句,如果您可以控制变量和参数名,那么最好以更好、更容易混淆的方式命名它们

如果在声明变量时不使用
var
,那么它将是全局的,您可以通过
窗口访问它。如果外部函数被绑定到窗口对象,这也可以工作


顺便说一句,如果你能控制变量和参数名,你最好用一种更好、更容易混淆的方式来命名它们

这是无效的,你不能拥有一个匿名函数,除非它是自动执行的。你所做的有一个正确的名称,即被调用。即使是故意创建的,正如其他人指出的那样,也应该避免。这是无效的,除非匿名函数是自动执行的,否则您不能拥有匿名函数。您所做的有一个正确的名称,即被调用。即使是故意的,就像其他人指出的那样,也应该避免。我当然是这么做的。我只是想知道这是否可能。谢谢当然我当然是这么做的。我只是想知道这是否可能。谢谢