给出以下JavaScript:
var someFunction = function(id) {
//do some stuff
var modifyId = function(id) {
//do some stuff
outer.id = id; //is there any way to modify the id variable in the outer scope from here?
}
}
如何修改从内部函数范围内传递到外部函数范围的id?
答案 0 :(得分:11)
不幸的是你做不到。通过在嵌套函数id
中命名参数,您已在外部函数中隐藏了参数。 Javascript不包含用于访问阴影名称的工具。唯一的选择是为其中一个变量选择不同的名称。
答案 1 :(得分:2)
不,没有。在一个函数中,没有办法(在Mozilla的代码或ES5中除了奇怪的东西)以任何明确的方式将范围称为上下文,并且没有办法以任何直接的方式爬上词法范围链。
好问题。
答案 2 :(得分:1)
为什么不能只重命名其中一个变量?
答案 3 :(得分:1)
var someFunction = function(id) {
//do some stuff
var oid = id;
var modifyId = function(id) {
//do some stuff
// you can access the outer id via the oid variable
}
}
但是,是的,你应该重命名一个正式的参数。