如何在某个给定范围内定义局部变量?
var f = function() {
// (1) var localVariable = 'some value';
alert(localVariable);
}
var defineLocalVariable = function(fnTarget) {
// (2) fnTarget['localVariable'] = 'blah...';
/* (3)
with (fnTarget) {
var localVariable = 'blah...'
} */
}
defineLocalVariable(f);
f();
看一下例子。如果取消注释(1)代码将提醒'f'函数的局部变量的值'某个值'。如果我想在运行时以编程方式定义这个局部变量怎么办?你能否建议实现'defineLocalVariable'函数来定义'f'中的局部变量,类似于(2)或(3)这些不是工作解决方案。
感谢。
答案 0 :(得分:2)
局部变量是私有变量。它们的概念是它们无法访问。
你能做的就是把它当成一个论点;这样,您就可以将其作为局部变量进行访问。您应该更新f
的签名。
var f = function(localVariable) {
alert(localVariable);
}
var defineLocalVariable = function(fnTarget) {
fnTarget(123);
}
defineLocalVariable(f);
但你不能只是设置它们以备将来使用而不打电话(看起来你想要那样)。
但是,你可以创建另一个可以保存的函数,它传递一个特定的参数:
var f = function(localVariable) {
alert(localVariable);
}
var defineLocalVariable = function(fnTarget) {
return function() {
fnTarget(123);
}
}
var func = defineLocalVariable(f);
func();
但同样,它不会直接修改原始函数的范围。