Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改函数中全局变量的值_Javascript - Fatal编程技术网

Javascript 如何更改函数中全局变量的值

Javascript 如何更改函数中全局变量的值,javascript,Javascript,我正在使用JavaScript并创建一个全局变量。我在函数外部定义它,我想从函数内部更改全局变量值,并从另一个函数中使用它,我如何做到这一点 只需使用该变量的名称即可 var a = 10; myFunction(); function myFunction(){ a = 20; } alert("Value of 'a' outside the function " + a); //outputs 20 在JavaScript中,如果变量是函数的参数,或者通过在变量名称前键入va

我正在使用JavaScript并创建一个全局变量。我在函数外部定义它,我想从函数内部更改全局变量值,并从另一个函数中使用它,我如何做到这一点

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

var a = 10;

myFunction();

function myFunction(){
   a = 20;
}

alert("Value of 'a' outside the function " + a); //outputs 20
在JavaScript中,如果变量是函数的参数,或者通过在变量名称前键入
var
关键字明确地将其声明为局部变量,则变量仅是函数的局部变量

如果局部值的名称与全局值的名称相同,请使用
窗口
对象

看到这个了吗

x=1;
y=2;
z=3;
函数a(y){
//y是函数的局部变量,因为它是函数参数
log('localy y:应该是10:',y);//通过函数参数的local y
y=3;//将只覆盖本地y,而不是“全局”y
log('localy y:应该是3:',y);//local y
//全局值可以通过窗口对象引用来访问
console.log('global y:应该是2:',window.y)//全局y,不同于本地y()
var x;//使x成为局部变量
x=4;//仅覆盖本地x
log('local x:应该是4:',x);//local x
z=5;//覆盖全局z,因为没有本地z
log('local z:应该是5:',z);//local z,与global相同
log('global z:应该是5:',window.z,z)//global z,与z相同,因为z不是本地的
}
a(10);
log('global x:应该是1:',x);//全球x
log('global y:应该是2:',y);//全局y

log('global z:应该是5:',z);//全局z,在函数a中被覆盖
仅引用函数内的变量;没有魔法,只是用它的名字。如果它是全局创建的,那么您将更新全局变量

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

这就是为什么总是使用
var
显式声明变量被认为是最佳实践的原因。因为如果你忘了它,你可能会意外地开始和全球人打交道。这是一个容易犯的错误。但在您的情况下,这将转变为一个简单的问题答案。


<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 x=2//X是全局的,值为2。 函数myFunction() { x=7;//x是局部变量,值为7。 } myFunction(); 警报(x)//x是全局变量,其值为7

使用窗口['variableName']窗口。variableName可以修改函数内部全局变量的值。

一种简单的方法是使用var

var apple = null;
const some_func =()=>{
      apple = 25
}
some_func()
console.log(apple)

这对我不起作用:country='foo'$.ajax({url:'/some endpoint',success:function(data){country=data.country;}}});console.log(country)//输出'foo'@MarkSimpson-它不起作用的原因是,在您的示例中,
console.log
会立即运行,但ajax成功函数只会在ajax调用实际返回响应时的某个时间点运行。这是ajax异步特性的一个基本要点:闭包函数中的代码不会与周围的代码按顺序运行。在学习事件驱动代码时,这一点很重要。在本例中,要使console.log更准确,可以将其放入ajax成功函数中。我的另一个精彩见解是:仔细检查变量名的拼写和大小写。很容易错过sessionId vs sessionId这样简单的东西。我在这些方面也有同样的问题。但终于明白了,谢谢@Spudley!只要不在函数内部使用
var
关键字,就不必处理
document.getElementById(“外部”).value=x感谢这个很棒的简单示例。这样做的逻辑是让我头疼。刚刚习惯了4d思维。+1用于描述全局变量和局部声明变量之间的名称冲突以及如何访问它。这是我可以更改角度分量中全局变量值的唯一方法!!!
var apple = null;
const some_func =()=>{
      apple = 25
}
some_func()
console.log(apple)