155

我正在使用 JavaScript,并创建了一个全局变量。我在函数外部定义它,我想从函数内部更改全局变量值并在另一个函数中使用它,我该怎么做?

4

6 回答 6

167

只需引用函数内部的变量即可;没有魔法,只是使用它的名字。如果它是全局创建的,那么您将更新全局变量。

您可以通过使用在本地声明它来覆盖此行为var,但如果您不使用var,则如果该变量已被全局声明,则函数中使用的变量名称将是全局的。

这就是为什么始终使用var. 因为如果你忘记了它,你可能会不小心开始弄乱全局变量。这是一个容易犯的错误。但是在您的情况下,这会转过来并成为您问题的简单答案。

于 2012-06-03T22:41:30.730 回答
80
var a = 10;

myFunction();

function myFunction(){
   a = 20;
}

alert("Value of 'a' outside the function " + a); //outputs 20
于 2012-06-03T16:34:13.223 回答
36

只需使用该变量的名称即可。

在 JavaScript 中,如果变量是函数的参数,或者您通过var在变量名称前键入关键字将它们显式声明为局部变量,则变量仅对函数是局部的。

如果局部值的名称与全局值同名,则使用window对象

看到这个jsfiddle

x = 1;
y = 2;
z = 3;

function a(y) {
  // y is local to the function, because it is a function parameter
  console.log('local y: should be 10:', y); // local y through function parameter
  y = 3; // will only overwrite local y, not 'global' y
  console.log('local y: should be 3:', y); // local y
  // global value could be accessed by referencing through window object
  console.log('global y: should be 2:', window.y) // global y, different from local y ()

  var x; // makes x a local variable
  x = 4; // only overwrites local x
  console.log('local x: should be 4:', x); // local x
  
  z = 5; // overwrites global z, because there is no local z
  console.log('local z: should be 5:', z); // local z, same as global
  console.log('global z: should be 5 5:', window.z, z) // global z, same as z, because z is not local
}
a(10);
console.log('global x: should be 1:', x); // global x
console.log('global y: should be 2:', y); // global y
console.log('global z: should be 5:', z); // global z, overwritten in function a

编辑

在 ES2015 中出现了另外两个关键字constand let,它们也会影响变量的范围(语言规范

于 2012-06-03T16:35:44.347 回答
10
var a = 10;

myFunction(a);

function myFunction(a){
   window['a'] = 20; // or window.a
}

alert("Value of 'a' outside the function " + a); //outputs 20

使用 window['variableName']window.variableName您可以修改函数内的全局变量的值。

于 2018-03-28T03:54:22.883 回答
8
<script>
var x = 2; //X is global and value is 2.

function myFunction()
{
 x = 7; //x is local variable and value is 7.

}

myFunction();

alert(x); //x is gobal variable and the value is 7
</script>
于 2014-03-10T08:22:55.003 回答
0

一个简单的方法是使用var

var apple = null;
const some_func =()=>{
      apple = 25
}
some_func()
console.log(apple)
于 2021-03-27T23:52:14.680 回答