如何在函数B()
中更改函数A()中x
的值
function A() {
var x = 10; // Value to be changed
function B() {
var x = 20;
// From here i want to change the value of x (i.e. x=10 to x=40)
}
B();
}
A();
答案 0 :(得分:10)
当打算覆盖变量时,请勿使用var
。使用var
创建一个新变量,该变量在声明它的作用域的本地。这就是x
在外面没有变化的原因。
function A() {
var x = 10;
function B() {
x = 20; // change x from 10 to 20
}
B(); // x is now changed
}
答案 1 :(得分:4)
如果我理解您的问题,以下代码是一个解决方案:
function A() {
var x = 10; // Value to be changed
function B() {
var x = 20;
// From here i want to change the value of x (i.e. x=10 to x=40)
changeX(40);
}
function changeX(y) {
x = y;
}
B();
alert(x);
}
A();
然而,有更优雅的方法,但这取决于您的应用。
答案 2 :(得分:2)
也许:
function A() {
var x = 10; // Value to be changed
function B() {
var x = 20;
return x; // Return new value of x
}
x = B(); // Set x to result returned by B(), i.e. the new value
}
A();
答案 3 :(得分:1)
var
语句将创建新的局部变量。所以在你的例子中:
function A() {
var x = 10; // You can think of it as A.x
function B() {
var x = 20; // And this as A.B.x
}
}
这两个变量属于不同的范围,如果你想从内部范围内访问外部范围的变量,只需访问它,而不重新声明它。
您可能需要查看http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf中提供的“JavaScript语言规范”文档,以了解范围,语句和其他基础知识如何在JavaScript中运行。