首页 > 解决方案 > 为什么我的 forloop 只运行一次 if 语句?

问题描述

我正在用 JS 编写一个计算器,目前我正在编写 '=' 函数,现在我将代码粘贴在下面,所以我设置了 exp = 5 + 5,一切正常,它告诉我总数是 10,现在当我做 5+5+5 它仍然说 10,好像循环不起作用,因为我希望它先做 5+5,将总数更新为 10,然后再次找到 + 运算符,然后添加任何内容加之后,我该怎么做?我不知道为什么循环不起作用

感谢所有帮助,

祝你有美好的一天,拉瓦

function equal(){

  var exp = document.form.textview.value;
  var expArray = exp.split(/\b/);
  console.log(expArray);
  let total = 0;
    for (let i = 0 ; i < expArray.length; i++){
      console.log(expArray[0])
      total = parseFloat(expArray[0])
      if(i = '+' || '-' || '/' || '*'){
      console.log(i);
      n = expArray.indexOf(i)
      total += parseFloat(expArray[n + 1]);
    }
   }

标签: javascriptarraysloops

解决方案


您的代码中存在某些错误。

total应该在循环外初始化,for否则会产生不正确的总值。

if(i = '+' || '-' || '/' || '*'){,在此而不是使用assignment operatori:e =,应使用comparison operatori:e=====(严格相等运算符)。还需要单独的比较表达式 i:e i=== '+' || i=== '-' || i=== '/' || i=== '*'i只不过是数组元素的索引,而不是数组i元素。我:e expArray[i]

let exp = "5 + 5 + 5";

function equal() {
  var expArray = exp.split(/\b/);
  let total = parseFloat(expArray[0]);
  for (let i = 0; i < expArray.length; i++) {
    const dig = expArray[i].trim();
    if (dig === '+' || dig === '-' || dig === '/' || dig === '*') {
      total += parseFloat(expArray[i + 1]);
    }
  }
  return total;
}

console.log(equal());


推荐阅读