<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
这没问题的..
#3
变个鬼!根本就没有改变只是函数里面的k被我加了1,全局变量还是2!
#4
没问题,我还提出来干什么?亲!有问题,怎么改变!
#5
弹出的是函数内的,我晕了你是不懂还是什么这么基本的都不知道?
#6
楼主的意思应该是弹出的k的值虽然增加了但是真实的全局变量并没有因为函数中k的值增加了1而改变,是这个意思吧
#7
楼主三四
#8
你确定只有这几个代码吗?没其他的,贴的代码和你运行的代码一模一样吗?
#9
是一模一样啊,其他的都不关事的,都是html代码单独运行都是正常的,这个不用列入考虑!
你要搞清楚我的问题!!!我问的是改变全局变量的方法,我只要改变全局变量!!vbscript中可以传值方式和传值方式byval、byref,javascript中要从函数改变全局变量用什么方法?
#10
byval在vbscript中是用作传值方式,把原值复制一份原本的全局变量不想被改变就用这种传值,否则用传址。
不过javascript中的就不知道了,我也是javascript的初学者
不过javascript中的就不知道了,我也是javascript的初学者
#11
#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
<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
废话,你前面几楼的话没看吗?都说了弹出肯定是3了,函数让k的值增加1,其中这个k是传址方式的,即复制一份k的值,原先的全局变量没有被改变
#14
js里面似乎传址的是对象,数组跟字符串,数字是传值的
#15
javascript里本来就只有值传递,又何来应用传递,首先传递引用同引用传递是不同的,更何况字符串只保存在栈内存里,基本类型的赋值都是独立拷贝出来的,不同对象的应用赋值指向同一个对象
#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应该是这样 其他的不知道了
本人菜鸟 不对勿喷
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>
这样才类似与传址 基本类型的变量只会传值 引用变量才会传址 有些语言只有传值 但对引用变量也会起到传值的作用
还是那句话 本人菜鸟 不对勿喷
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
#1
变了啊
var k=2;
function explus(){
k=k+1;
alert(k);
}
explus();
alert(k); //弹出什么
#2
这没问题的..
#3
变个鬼!根本就没有改变只是函数里面的k被我加了1,全局变量还是2!
#4
没问题,我还提出来干什么?亲!有问题,怎么改变!
#5
弹出的是函数内的,我晕了你是不懂还是什么这么基本的都不知道?
#6
楼主的意思应该是弹出的k的值虽然增加了但是真实的全局变量并没有因为函数中k的值增加了1而改变,是这个意思吧
#7
楼主三四
#8
你确定只有这几个代码吗?没其他的,贴的代码和你运行的代码一模一样吗?
#9
是一模一样啊,其他的都不关事的,都是html代码单独运行都是正常的,这个不用列入考虑!
你要搞清楚我的问题!!!我问的是改变全局变量的方法,我只要改变全局变量!!vbscript中可以传值方式和传值方式byval、byref,javascript中要从函数改变全局变量用什么方法?
#10
byval在vbscript中是用作传值方式,把原值复制一份原本的全局变量不想被改变就用这种传值,否则用传址。
不过javascript中的就不知道了,我也是javascript的初学者
不过javascript中的就不知道了,我也是javascript的初学者
#11
#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
<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
废话,你前面几楼的话没看吗?都说了弹出肯定是3了,函数让k的值增加1,其中这个k是传址方式的,即复制一份k的值,原先的全局变量没有被改变
#14
js里面似乎传址的是对象,数组跟字符串,数字是传值的
#15
javascript里本来就只有值传递,又何来应用传递,首先传递引用同引用传递是不同的,更何况字符串只保存在栈内存里,基本类型的赋值都是独立拷贝出来的,不同对象的应用赋值指向同一个对象
#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应该是这样 其他的不知道了
本人菜鸟 不对勿喷
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>
这样才类似与传址 基本类型的变量只会传值 引用变量才会传址 有些语言只有传值 但对引用变量也会起到传值的作用
还是那句话 本人菜鸟 不对勿喷
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
楼主最好找个文本比对软件,看看别人的代码和自己的到底是不是一样。