You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教这段JavaScript代码的含义,重点是while循环内的除法逻辑

这段while循环代码的逻辑解析

这段代码是优先处理表达式里所有除法运算的逻辑(对应四则运算中乘除优先级高于加减的规则),拆解如下:

逐行解释while循环内的代码

  • var divide = operators.indexOf("÷");
    先定位数组里第一个÷运算符的索引位置,找不到就返回-1。

  • while (divide != -1) { ... }
    只要数组里还有未处理的÷(即divide不等于-1),就重复执行循环内的计算逻辑,直到所有除法都处理完毕。

  • numbers.splice(divide, 2, numbers[divide] / numbers[divide + 1]);
    这是核心计算步骤:

    • numbers[divide]是除法运算符左边的数字,numbers[divide + 1]是右边的数字,numbers[divide] / numbers[divide + 1]就是执行这两个数的除法计算。
    • splice方法的作用是:从numbers数组的divide位置开始,删掉2个元素(也就是左右两个待除的数),然后把除法计算的结果插入到这个位置。这样numbers数组的长度会减少1,原本的两个数被替换成了除法结果。
  • operators.splice(divide, 1);
    把已经处理完成的那个÷运算符从operators数组里移除,因为对应的两个数已经计算完成,不需要再保留这个运算符。

  • divide = operators.indexOf("÷");
    重新查找数组里下一个÷的位置,继续循环处理,直到找不到÷(返回-1),循环结束。

实际例子演示

假设inputString是"12÷3+5÷2":

  1. 初始状态:numbers = ["12","3","5","2"],operators = ["÷","+","÷"]
  2. 第一次循环:找到索引0的÷,计算12/3=4,numbers变为[4,"5","2"],operators变为["+","÷"]
  3. 第二次循环:找到索引1的÷,计算5/2=2.5,numbers变为[4,2.5],operators变为["+"]
  4. 再次查找÷返回-1,循环结束,后续可处理剩下的加法运算。

内容的提问来源于stack exchange,提问作者yeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:30:17