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
,那么它将是全局的,您可以通过窗口访问它。如果外部函数被绑定到窗口对象,这也可以工作
顺便说一句,如果你能控制变量和参数名,你最好用一种更好、更容易混淆的方式来命名它们这是无效的,你不能拥有一个匿名函数,除非它是自动执行的。你所做的有一个正确的名称,即被调用。即使是故意创建的,正如其他人指出的那样,也应该避免。这是无效的,除非匿名函数是自动执行的,否则您不能拥有匿名函数。您所做的有一个正确的名称,即被调用。即使是故意的,就像其他人指出的那样,也应该避免。我当然是这么做的。我只是想知道这是否可能。谢谢当然我当然是这么做的。我只是想知道这是否可能。谢谢