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

<script type="text/javascript">
var num1=1;
document.write(num1++);
</script>
<script type="text/javascript">
var num1=1;
num1++
document.write(num1);
</script>


qq_ETERNAL丿语丶风_0
浏览 2642回答 7
7回答

慕大叔

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

StoneVoice

<script type="text/javascript">var num1=1;document.write(num1++);    // 运行完后,num1为2    (num++先引用再自加)document.write(num1);   //这就输出2了document.write(++num1);   //这就输出3了   (++num,是先自加再引用)num1++;   //自加  num1为4document.write(num1);   //这就输出4了++num1;   //自加   num1为5document.write(num1);   //这就输出5了</script>

wl温良

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

zhiyun_xu111

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

qq_大寒_2

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

相关分类

JavaScript