是否可以访问javascript函数的私有变量

时间:2011-11-25 10:36:57

标签: javascript

假设我有一个JavaScript函数。它包含一个变量x;

function A(){
   var x = 12+34;
}

是否可以从外部函数x访问x?

3 个答案:

答案 0 :(得分:3)

,这样做的能力没有任何意义。假设我们稍微改变了你的功能并调用它3次:

function x(n){
   var x = n+34;
}

x(1), x(2), x(3);

此时,该函数已运行3次,因此变量x已创建3次 - 您希望能够访问x?然后有垃圾收集;如果浏览器不再在变量范围内时必须保持变量存活,那么如何从内存中清除引用和数据呢?

如果你愿意,你可以做这样的事情:

function x() {
    x.x = 12+34;
}
x();

或者,如果变量将是静态/恒定的

function x() { }
x.x = 12+34;

或最后,正如其他人所指出的那样,通过在函数范围之外的不同名称声明x

var y;
function x() {
    y = 12+34;
}
x();

答案 1 :(得分:0)

是的,但不是上面示例中的范围。你必须使用封闭。请考虑以下事项:

var x,
    A = function () {
        x = 12 + 34;
    };

通过这种方式,您可以从函数A中访问x。更好的是x可以直接访问A的私有成员,因此可以用来泄露A之外的私有数据。

答案 2 :(得分:0)

您不能通过名称直接访问它,尝试从变量声明中删除'var',因为这应该使变量成为全局变量,或者将它们放在ready函数之外。并从函数中返回x的值。

你可以这样做:

$(document).ready(function() {    
        var x;
        function x(){
            x = 12+34;
            return x;
        }
        alert(x());
});

Here is its jsfiddle

希望这有帮助。