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
(您的参数(。
出于显而易见的原因,这不被认为是一个好主意。至少,它会导致代码不可读。
相关文章:
- JavaScript回调函数
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 如何正确地将参数传递给RequireJS回调函数
- 回调函数在python代码中离线
- 从AJAX回调函数中分离数据
- 赋值后的回调函数
- 如何在javascript回调函数中返回多个变量
- 函数表达式,返回回调函数
- 等待回调函数执行
- JavaScript回调函数和Google Feed API
- 如何从ajax成功回调函数中读取javascript变量
- 正在保存JavaScript内部回调函数中的值
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 在Golang回调函数中启用CORS
- 在初始函数完成之前调用回调函数
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 即使使用回调函数也无法返回值
- 为什么prototypjs观察到回调函数有绑定