当参数为value+ac_over_value===valueOfB
时,for循环中的if语句不会触发,但例如valueOfA
= 1,valueOfB
= 2且valueOfC
= 1,我将if语句的参数设置为value+ac_over_value===2
它确实有效。如果与变量进行比较,为什么该语句不起作用?
function getN(decP){
var valueOfA = document.getElementById("a-f").value;
var valueOfB = document.getElementById("b-f").value;
var valueOfC = document.getElementById("c-f").value;
var result = Math.pow(10, (decP*-1));
a_c = valueOfA*valueOfC;
var neg_a_c;
var pos_a_c;
if(a_c<0){
neg_a_c = a_c;
pos_a_c = a_c*-1
}
else{
pos_a_c = a_c;
neg_a_c = a_c*-1;
}
for(value=pos_a_c;value>=neg_a_c;value-=result){
ac_over_value = a_c/value;
if(value+ac_over_value === valueOfB){
divideByCoefficient(value, ac_over_value);
}
}
};
答案 0 :(得分:1)
===表示它们必须属于同一类型。检查以确保类型相同。否则只需使用==
答案 1 :(得分:1)
您可能需要将valueOfA,valueOfB和valueOfC转换为与ac_over_value相同的类型。根据需要使用parseFloat或parseInt。
实施例
var valueOfB = parseFloat(document.getElementById("b-f").value);
与FirstLegion一样,===检查类型不仅仅是值。