如何更改函数内部全局变量的值
How do I change the value of a global variable inside of a function
我正在使用JavaScript,我创建了一个全局变量。我在函数外部定义它,我想从函数内部更改全局变量值并从另一个函数中使用它,我该怎么做?
只需引用函数中的变量;没有魔法,只需使用它的名称。如果它是全局创建的,则将更新全局变量。
您可以通过使用 var
在本地声明此行为来覆盖此行为,但是如果您不使用 var
,则函数中使用的变量名将是全局的,如果该变量已全局声明。
这就是为什么始终使用 var
显式声明变量被认为是最佳实践。因为如果你忘记了它,你可能会意外地开始弄乱全局变量。这是一个很容易犯的错误。但在你的情况下,这转身变成了你问题的简单答案。
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
只需使用该变量的名称。
在 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:', window.z) // global z, same as z, because z is not local
}
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 3:', z); // global z
a(10)
console.log('global x: should be 1:', x); // global x, unaltered
console.log('global y: should be 2:', y); // global y, unaltered
console.log('global z: should be 5:', z); // global z, overwritten in function a
编辑
在ES2015中,又出现了两个关键字const
和let
,它们也会影响变量的范围(语言规范)
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,您可以修改函数内全局变量的值。
<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>
一个简单的
方法是使用 var
var apple = null;
const some_func =()=>{
apple = 25
}
some_func()
console.log(apple)
相关文章:
- 匿名自执行js函数内部的全局变量在外部仍然可用
- 更改函数内部的全局变量而不调用它
- angular/javascript无法识别函数内部的全局变量
- 如何修改函数内部的全局变量
- 在CrossRider内部创建的全局变量's的appAPI.ready()函数对页面不可用
- 函数内部的JavaScript全局变量定义
- 函数内部的JavaScript延迟,没有全局变量
- 为什么全局变量没有't似乎受到内部作用域(Javascript)的影响
- 对函数内部的全局变量所做的更改是否全局反映?Javascript
- 如何更改函数内部全局变量的值
- jquery更改函数内部的全局变量
- 从函数内部声明一个全局变量
- 为什么没有识别全局变量(内部函数)
- jQuery在函数AJAX函数内部的全局变量有问题
- Javascript全局变量未进入函数内部
- 如何从函数内部声明全局变量
- JavaScript全局变量在函数内部变为未定义
- 为什么定义在函数内部的x在我没有声明它为变量的情况下变成了一个全局变量?
- 如何从匿名函数内部更改全局变量
- 通过参数修改函数内部的全局变量