javascript中如何改变全局变量

时间:2021-04-05 10:28:41
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
</script>

但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?

20 个解决方案

#1


变了啊
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么

#2


引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
</script> 
但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?


这没问题的..

#3


引用 1 楼  的回复:
变了啊
JScript code
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么


变个鬼!根本就没有改变只是函数里面的k被我加了1,全局变量还是2!

#4


引用 2 楼  的回复:
引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
k=k+1;
alert(k);
}
</script>
但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?


这没问题的..

没问题,我还提出来干什么?亲!有问题,怎么改变!

#5


引用 1 楼  的回复:
变了啊
JScript code
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么

弹出的是函数内的,我晕了你是不懂还是什么这么基本的都不知道?

#6


楼主的意思应该是弹出的k的值虽然增加了但是真实的全局变量并没有因为函数中k的值增加了1而改变,是这个意思吧

#7


楼主三四

#8


引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
</script>

但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?

你确定只有这几个代码吗?没其他的,贴的代码和你运行的代码一模一样吗?

#9


引用 8 楼  的回复:
引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
k=k+1;
alert(k);
}
</script>

但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?

你确定只有这几个代码吗……

是一模一样啊,其他的都不关事的,都是html代码单独运行都是正常的,这个不用列入考虑!
你要搞清楚我的问题!!!我问的是改变全局变量的方法,我只要改变全局变量!!vbscript中可以传值方式和传值方式byval、byref,javascript中要从函数改变全局变量用什么方法?

#10


byval在vbscript中是用作传值方式,把原值复制一份原本的全局变量不想被改变就用这种传值,否则用传址。
不过javascript中的就不知道了,我也是javascript的初学者

#11


该回复于2012-05-05 11:15:08被版主删除

#12


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
<script type="text/javascript">
<!--
var k=2;
function explus(){
k=k+1;
alert(k);
}
explus();
alert(k); //弹出什么
//-->
</script>
 




 </body>
</html>
把这段代码你去运行一下,绝对是:3

#13


引用 12 楼  的回复:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
……

废话,你前面几楼的话没看吗?都说了弹出肯定是3了,函数让k的值增加1,其中这个k是传址方式的,即复制一份k的值,原先的全局变量没有被改变

#14


js里面似乎传址的是对象,数组跟字符串,数字是传值的

#15


javascript里本来就只有值传递,又何来应用传递,首先传递引用同引用传递是不同的,更何况字符串只保存在栈内存里,基本类型的赋值都是独立拷贝出来的,不同对象的应用赋值指向同一个对象

引用 13 楼  的回复:
引用 12 楼  的回复:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content=……

#16


<script type="text/javascript">
var k=2;
function cc(x){
x+=1;
alert("inner"+x);//3
}
cc(k);
alert("outer"+k);//2
</script>
首先不明白楼主的意思   不过看来看去说什么传值传址的  貌似你的函数什么都没传啊   此时改变的当然是全局的k了 你把k传进去之后再在外部调   传值不能改变原来的值  传进去的也只是原来值的副本  java和javascript应该是这样  其他的不知道了  
本人菜鸟  不对勿喷

#17


<script type="text/javascript">
var k=[];
k[0]=2;
function cc(x){
x[0]+=1;
alert("inner"+x[0]);//3
}
cc(k);
alert("outer"+k[0]);//3
</script>
这样才类似与传址  基本类型的变量只会传值  引用变量才会传址  有些语言只有传值 但对引用变量也会起到传值的作用
还是那句话   本人菜鸟   不对勿喷 

#18


我也想知道到底怎么来改变全局变量的值,困扰中。

#19


楼主知道答案了没

#20


楼主最好找个文本比对软件,看看别人的代码和自己的到底是不是一样。

#1


变了啊
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么

#2


引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
</script> 
但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?


这没问题的..

#3


引用 1 楼  的回复:
变了啊
JScript code
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么


变个鬼!根本就没有改变只是函数里面的k被我加了1,全局变量还是2!

#4


引用 2 楼  的回复:
引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
k=k+1;
alert(k);
}
</script>
但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?


这没问题的..

没问题,我还提出来干什么?亲!有问题,怎么改变!

#5


引用 1 楼  的回复:
变了啊
JScript code
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么

弹出的是函数内的,我晕了你是不懂还是什么这么基本的都不知道?

#6


楼主的意思应该是弹出的k的值虽然增加了但是真实的全局变量并没有因为函数中k的值增加了1而改变,是这个意思吧

#7


楼主三四

#8


引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
</script>

但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?

你确定只有这几个代码吗?没其他的,贴的代码和你运行的代码一模一样吗?

#9


引用 8 楼  的回复:
引用楼主  的回复:
如下k=2为声明的全局变量,explus函数内部想要改变k全局变量的值,然后弹出k的值

<script language="javascript">
var k=2;
function explus(){
k=k+1;
alert(k);
}
</script>

但上面的全局变量仍然没有改变,应该怎样改变全局变量的值?

你确定只有这几个代码吗……

是一模一样啊,其他的都不关事的,都是html代码单独运行都是正常的,这个不用列入考虑!
你要搞清楚我的问题!!!我问的是改变全局变量的方法,我只要改变全局变量!!vbscript中可以传值方式和传值方式byval、byref,javascript中要从函数改变全局变量用什么方法?

#10


byval在vbscript中是用作传值方式,把原值复制一份原本的全局变量不想被改变就用这种传值,否则用传址。
不过javascript中的就不知道了,我也是javascript的初学者

#11


该回复于2012-05-05 11:15:08被版主删除

#12


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
<script type="text/javascript">
<!--
var k=2;
function explus(){
k=k+1;
alert(k);
}
explus();
alert(k); //弹出什么
//-->
</script>
 




 </body>
</html>
把这段代码你去运行一下,绝对是:3

#13


引用 12 楼  的回复:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
……

废话,你前面几楼的话没看吗?都说了弹出肯定是3了,函数让k的值增加1,其中这个k是传址方式的,即复制一份k的值,原先的全局变量没有被改变

#14


js里面似乎传址的是对象,数组跟字符串,数字是传值的

#15


javascript里本来就只有值传递,又何来应用传递,首先传递引用同引用传递是不同的,更何况字符串只保存在栈内存里,基本类型的赋值都是独立拷贝出来的,不同对象的应用赋值指向同一个对象

引用 13 楼  的回复:
引用 12 楼  的回复:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content=……

#16


<script type="text/javascript">
var k=2;
function cc(x){
x+=1;
alert("inner"+x);//3
}
cc(k);
alert("outer"+k);//2
</script>
首先不明白楼主的意思   不过看来看去说什么传值传址的  貌似你的函数什么都没传啊   此时改变的当然是全局的k了 你把k传进去之后再在外部调   传值不能改变原来的值  传进去的也只是原来值的副本  java和javascript应该是这样  其他的不知道了  
本人菜鸟  不对勿喷

#17


<script type="text/javascript">
var k=[];
k[0]=2;
function cc(x){
x[0]+=1;
alert("inner"+x[0]);//3
}
cc(k);
alert("outer"+k[0]);//3
</script>
这样才类似与传址  基本类型的变量只会传值  引用变量才会传址  有些语言只有传值 但对引用变量也会起到传值的作用
还是那句话   本人菜鸟   不对勿喷 

#18


我也想知道到底怎么来改变全局变量的值,困扰中。

#19


楼主知道答案了没

#20


楼主最好找个文本比对软件,看看别人的代码和自己的到底是不是一样。

#21