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 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题