Javascript 如何更改函数中全局变量的值
我正在使用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
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)