繁体   English   中英

JavaScript:与其他变量同名的回调函数参数?

[英]JavaScript: callback function parameter with same name as other variable?

var str = 'internet';

performAction(function(str) {
    console.log(str);
});

有一个私有变量str和一个具有相同名称的参数的回调函数是否有问题?

谢谢!

这只是一个标准的范围情况 - 它是一个作为参数传递给另一个函数的匿名函数表达式并不重要。 请注意,在你的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"

在那种情况下,我有一个带有一个名为str的参数的函数,但是当我调用它时,我正在传递一个不同的str 请注意,更改该函数中的str只会更改本地str而不是全局str 它们是两个不同的变量......

技术上没有问题。 该函数将记录当前在范围内的str (您的参数)。

出于显而易见的原因,这不是一个好主意。 至少,它会产生无法读取的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM