javascript - 为什么我的 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]);
}
}
解决方案
您的代码中存在某些错误。
total
应该在循环外初始化,for
否则会产生不正确的总值。
if(i = '+' || '-' || '/' || '*'){
,在此而不是使用assignment operator
i:e =,应使用comparison operator
i: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());
推荐阅读
- javascript - 如何在 javascript 中的自定义元素中获取 HTML 元素的 id?
- android - 如何修复此错误:空对象引用上的“java.lang.Class java.lang.Object.getClass()”
- javascript - 如何解决TypeError:无法读取mongodb中未定义的属性'connect'?
- javascript - 需要选择 laravel 上选定用户的详细信息
- c++ - 如何通过命令运行 Win10 Camera 应用程序?
- javascript - 在 CSS 中我的井字游戏没有显示 3x3 网格
- core-data - 将 AppKit/UIKit 中的 Key-Value Observation 转换为 Combine 和 SwiftUI
- java - 在不使用任何内置函数的情况下从数组中捕获重复项
- python - 重命名文件夹中的文件,然后将它们移动到另一个文件夹
- javascript - 带有标题的名称的Javascript正则表达式匹配