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日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器