为了账号安全,请及时绑定邮箱和手机立即绑定

两段代码都是++为什么第一段返回值是1,第二段返回值是2呢?

两段代码都是++为什么第一段返回值是1,第二段返回值是2呢?

qq_ETERNAL丿语丶风_0 2016-03-08 10:47:41
<script type="text/javascript"> var num1=1; document.write(num1++); </script><script type="text/javascript"> var num1=1; num1++ document.write(num1); </script>
查看完整描述

7 回答

已采纳
?
慕大叔

TA贡献75条经验 获得超103个赞

num++先引用再自加,例如document.write(num++)中先输出num=1,等这句代码运行结束后num=2,所以第二段代码你先做了num++运算,再输出答案就是2了。同理++num,是先自加再引用,如果你想用第一段代码输出结果为2的话,那就改成++num吧。

查看完整回答
7 反对 回复 2016-03-08
?
StoneVoice

TA贡献1条经验 获得超1个赞

<script type="text/javascript">

var num1=1;

document.write(num1++);    // 运行完后,num1为2    (num++先引用再自加)

document.write(num1);   //这就输出2了

document.write(++num1);   //这就输出3了   (++num,是先自加再引用)

num1++;   //自加  num1为4

document.write(num1);   //这就输出4了

++num1;   //自加   num1为5

document.write(num1);   //这就输出5了

</script>


查看完整回答
1 反对 回复 2016-03-08
?
wl温良

TA贡献18条经验 获得超10个赞

你知道num++和++num的区别吗,num++是先引用num再进行计算,而++num是先计算在引用num。所以在你的第一段代码中是先引用再计算的。      求采纳 。谢谢。

查看完整回答
反对 回复 2016-03-11
?
zhiyun_xu111

TA贡献1条经验 获得超0个赞

因为第一段代码里面你的num1++是放在输出程序上面,在这种情况上,编译器是会先返回num1的数值,然后再对num1进行++。如果你再加一段代码document.write(num1),那么就会返回2了


如果你一开始就想返回2,代码就换成document.write(++num1)吧!,返回的结果就是2了。

查看完整回答
反对 回复 2016-03-08
?
qq_大寒_2

TA贡献173条经验 获得超185个赞

感觉这是作用域里面的知识点,我的理解,是游览器预解析在<script></script>里,从上到下。找到var ,未定义,然后读代码变量num1=1,然后在往下读读到doucment.write里面的内容要去找num1,无变量num1,存在表达式,就往父级全局变量读,找到外面的var num1=1.貌似是这样涉及到作用域链知识。。先mark下,学完全部再回来看看。

查看完整回答
反对 回复 2016-03-08
  • 7 回答
  • 0 关注
  • 2607 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信