假设我有一个JavaScript函数。它包含一个变量x;
function A(){
var x = 12+34;
}
是否可以从外部函数x访问x?
答案 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());
});
希望这有帮助。