主题:  我是刚学javascript,如何理解++和--呢?

xiaodan

职务:普通成员
等级:2
金币:2.5
发贴:330
注册:2002/3/21 22:07:18
#12003/12/23 18:44:25
<script language="javascript">
<!--
var person1=4;
var person2=++person1;
var person3=2;
var person4=--person3;
document.write(person1,"<br>");
document.write(person2,"<br>");
document.write(person3,"<br>");
document.write(person4,"<br>");
//-->
</script>
为什么输出
5
5
1
1
呢??


《房地产PSD分层素材库》12DVD100元一套电子目录地址

=ridincal=

职务:管理员
等级:7
金币:20.0
发贴:5886
注册:2004/1/13 11:47:04
#22003/12/23 19:02:12
++和--都属于单目操作符(操作数只有一个),而单目操作符通常分为前缀操作符和后缀操作符。++和--在分别作为前缀和后缀操作符时是有区别的,主要体现在操作符和操作数的优先级上。

作前缀时,先执行运算然后返回结果;做后缀时,先返回操作数再对操作数进行运算。

例如:
n=0;m=0;
n=++m 和 n=m++的运算结果m都是1,因为最终m都被递增了,但n却不一样——前者为1后者为0,因为n=++m是先对m递增再返回结果,而n=m++是先返回m再对m递增。

不知道说清楚了没有……



=ridincal=

职务:管理员
等级:7
金币:20.0
发贴:5886
注册:2004/1/13 11:47:04
#32003/12/23 19:05:02
可以将你的代码焕为:
<script language="javascript">
<!--
var person1=4;
var person2=person1++;
var person3=2;
var person4=person3--;
document.write(person1,"<br>");
document.write(person2,"<br>");
document.write(person3,"<br>");
document.write(person4,"<br>");
//-->
</script>



再试试。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#42003/12/23 21:38:52
够清楚,我喜欢:No one can stop you except yourself.



xiaodan

职务:普通成员
等级:2
金币:2.5
发贴:330
注册:2002/3/21 22:07:18
#52003/12/23 23:29:19
n=0;m=0;
n=++m 和 n=m++的运算结果m都是1,因为最终m都被递增了,但n却不一样——前者为1后者为0,因为n=++m是先对m递增再返回结果,而n=m++是先返回m再对m递增。
不明白大哥的意思啊??


《房地产PSD分层素材库》12DVD100元一套电子目录地址

=ridincal=

职务:管理员
等级:7
金币:20.0
发贴:5886
注册:2004/1/13 11:47:04
#62003/12/24 9:37:14
倒~这样也不行?嗯……
m=0;
++m先对m递增,m变为1,然后返回m的值也就是1;
m++先返回m的值也就是0(这是还没有递增)然后对m递增,m变为1,明白?



vickie_5d

职务:普通成员
等级:3
金币:2.0
发贴:946
注册:2003/5/23 12:33:46
#72003/12/24 19:39:07
咦~~才发现啊~~

JS语言好像和C语言有些相似类~~~
(偶没学过JS啊~~~)
不过看到ridincal写的语法,和C有些相似滴~~



=ridincal=

职务:管理员
等级:7
金币:20.0
发贴:5886
注册:2004/1/13 11:47:04
#82003/12/24 19:57:13
vickie在上个帖子中说
引用:
咦~~才发现啊~~

JS语言好像和C语言有些相似类~~~
(偶没学过JS啊~~~)
不过看到ridincal写的语法,和C有些相似滴~~


是的,很多地方很相似



vickie_5d

职务:普通成员
等级:3
金币:2.0
发贴:946
注册:2003/5/23 12:33:46
#92003/12/25 20:23:02
呵呵~~~有些怀念C语言类~~
还是在上大学的时候学习的~~~



哲风

职务:普通成员
等级:1
金币:0.0
发贴:67
注册:2003/2/24 19:01:19
#102004/1/3 19:10:23
<script language="javascript">
<!--
var person1=4;
var person2=person1++;
var person3=2;
var person4=person3--;
document.write(person1,"<br>");
document.write(person2,"<br>");
document.write(person3,"<br>");
document.write(person4,"<br>");
//-->
</script>

作前缀时,先执行运算然后返回结果;做后缀时,先返回操作数再对操作数进行运算。(这句话很关键!!!)
--------------------------------------------------------------------------------------------对不对?
5
4
1
2



=ridincal=

职务:管理员
等级:7
金币:20.0
发贴:5886
注册:2004/1/13 11:47:04
#112004/1/3 21:12:52
是的



loqz

职务:普通成员
等级:1
金币:0.0
发贴:9
注册:2003/8/15 14:05:57
#122004/1/7 12:46:39
如果你有学过别的编程语言就会明白这其中的意思了
++AA,代表在执行这条语句之前AA己经加上1了
AA++,代表在执行这条语句之后AA才加上1
反之——的效果也是一样的



康夫

职务:普通成员
等级:5
金币:3.0
发贴:3311
注册:2002/8/7 1:00:31
#132004/1/10 10:52:41
讲得很清楚啊,谢谢,又学了一招!