在某个给定范围内定义局部变量

时间:2011-08-31 20:28:59

标签: javascript

如何在某个给定范围内定义局部变量?

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)这些不是工作解决方案。

感谢。

1 个答案:

答案 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();

但同样,它不会直接修改原始函数的范围。