var str = 'internet';
performAction(function(str) {
console.log(str);
});
Run Code Online (Sandbox Code Playgroud)
有一个私有变量str,还有一个带有同名参数的回调函数有问题吗?
谢谢!
nnn*_*nnn 11
这只是一个标准的范围情况 - 它是一个作为参数传递给另一个函数的匿名函数表达式并不重要.请注意,在您的performAction()函数(您未显示)中,它将无法访问str回调函数的参数 - 如果performAction()引用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"
Run Code Online (Sandbox Code Playgroud)
在那种情况下,我有一个带有参数的函数,str但是当我调用它时,我传递的是另一个str.请注意,str在该函数内更改仅更改本地str而不是全局.它们是两个不同的变量......