noob—from—sky 2021-09-17 11:53 采纳率: 100%
浏览 42
已结题

javascript中的赋值逻辑顺序问题()

今天在研究编程入门的一道经典问题:输入a,b两个变量,将两个变量的值互换后打印在屏幕上。
正常流程是定义第三个变量c,将其中一个变量的值存在里面,随后通过两个赋值操作完成,具体代码如下:

<script type="text/javascript">
            var num1=window.prompt("pls enter ur first num");
            var num2=window.prompt("pls enter ur secound num");
            var num3=num2;
            num2=num1;
            num1=num3;
</script>

突然我想到,能否不定义第三个变量,仅用它们自己完成呢?
要完成这个操作,两个赋值就必须在同一时间完成,否则就会因为值被覆盖而失败。
于是我写出了如下代码:

<script type="text/javascript">
            var num1=window.prompt("pls enter ur first num");
            var num2=window.prompt("pls enter ur secound num");
            num1=num2+(num2=num1)*0
</script>

从逻辑顺序上讲,括号内的num2应该先被赋值为num1,从而导致括号外num2值的改变,最终使得num1=(num2=num1)导致失败,但结果却成功了,请问这是为什么呢?

  • 写回答

2条回答 默认 最新

  • 关注

    因为运算顺序是从左向右,在取第一个num2的时候,num2还没有被改变,所以能够成功

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月26日
  • 已采纳回答 9月18日
  • 创建了问题 9月17日