var str = 'internet';
performAction(function(str) {
console.log(str);
});
私有变量有问题吗str
并且还有一个带有同名参数的回调函数?
Thanks!
这只是一个标准范围的情况 - 它是作为参数传递给另一个函数的匿名函数表达式这一事实并不重要。请注意,在您的performAction()
函数(您没有显示)它将无权访问str
这是回调函数的参数 - ifperformAction()
参考str
它将获得全局“internet”变量(或其自己的本地变量)str
如果已定义)。
出于作用域的目的,函数的参数与该函数的局部变量相同,这意味着它们从外部作用域中屏蔽了同名的其他变量 - 但即使在更广泛的作用域中定义,仍然可以访问具有不同名称的变量。
如果您执行以下操作,可能会感到困惑:
var str = "internet";
(function(str) {
console.log(str); // "internet"
str = "local param";
console.log(str); // "local param"
})(str);
console.log(str); // "internet"
在这种情况下,我有一个带有参数的函数,称为str
但当我调用它时,我传递的是不同的str
。请注意,改变str
在该函数中仅更改本地str
,而不是全局的。它们是两个不同的变量...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)