运算符在 React JS 中表现异常
Operators behaving strangely in React JS
我的 React 应用混淆了“/”字符串和“+”。
console.log(numbers, signs);
此记录:
Array [ "6", "2" ] Array [ "/" ]
在此之后,我遍历数组并应用适当的运算符,如下所示:
for (let e = 1; e < numbers.length; e++) {
if ((signs[counter] = "+")) {
newTotal += parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] = "-")) {
newTotal -= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] = "*")) {
newTotal *= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] = "/")) {
newTotal = newTotal / parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
}
除“/”外,每个运算符都工作正常,它总是像“+”一样工作。所以上面的代码 returns 8 而不是 3。什么给了?
您正在将 signs[counter] 分配给 + 在您的 if 语句之上。
使用 ===
为了正常工作,您的代码应如下所示:
let counter = 0;
for (let e = 1; e < numbers.length; e++) {
if ((signs[counter] == "+")) {
newTotal += parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] == "-")) {
newTotal -= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] == "*")) {
newTotal *= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] == "/")) {
newTotal = newTotal / parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
}
}
我的 React 应用混淆了“/”字符串和“+”。
console.log(numbers, signs);
此记录:
Array [ "6", "2" ] Array [ "/" ]
在此之后,我遍历数组并应用适当的运算符,如下所示:
for (let e = 1; e < numbers.length; e++) {
if ((signs[counter] = "+")) {
newTotal += parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] = "-")) {
newTotal -= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] = "*")) {
newTotal *= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] = "/")) {
newTotal = newTotal / parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
}
除“/”外,每个运算符都工作正常,它总是像“+”一样工作。所以上面的代码 returns 8 而不是 3。什么给了?
您正在将 signs[counter] 分配给 + 在您的 if 语句之上。 使用 ===
为了正常工作,您的代码应如下所示:
let counter = 0;
for (let e = 1; e < numbers.length; e++) {
if ((signs[counter] == "+")) {
newTotal += parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] == "-")) {
newTotal -= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] == "*")) {
newTotal *= parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
} else if ((signs[counter] == "/")) {
newTotal = newTotal / parseInt(numbers[e]);
counter += 1;
console.log(newTotal);
}
}