为什么我的JS" if"声明总是评估为假?

时间:2015-02-12 16:31:39

标签: javascript if-statement comparison-operators

我的代码:

if (calculatedColumn5 >= calculatedColumn) {
'Enough credits.'
}
{
'Not enough credits.'
}

即使'calculatedColumn5'显然大于'calculatedColumn',也会评估为“没有足够的积分”。

我甚至试过这个:

if (calculatedColumn5 >= calculatedColumn) {
'Enough credits.'
}
else if (calculatedColumn5 < calculatedColumn)
{
'Not enough credits.'
}
else {
''
}

......它总是评估为''!那么我的“if”条件是否存在问题,他们只是总是评估为假?

顺便说一下,变量(calculatedColumn5和calculatedColumn)都是十进制值。

3 个答案:

答案 0 :(得分:2)

也许这些值实际上是字符串,并且正在作为字符串进行比较。

尝试使用:

if (parseFloat(calculatedColumn5) >= parseFloat(calculatedColumn)) {

答案 1 :(得分:0)

请记住,在JS中,未定义(未初始化)变量的计算结果为false。请尝试以下方法:

var a;
if (a) console.log('True'); else console.log('False');

评估为false。

对未定义值执行的任何逻辑运算也是如此。

var a;
var b = 5;
if (a > b) console.log('greater'); else console.log('lower or equal');

评估为false。

答案 2 :(得分:-1)

你应该舍入两个或至少摆脱小数,以避免不必要的行为。请查看https://stackoverflow.com/a/18741293/2192152

此外:

// Test if ===, or greated
if (calculatedColumn5 >= calculatedColumn) {
'Enough credits.'
}
// Test if strictly inferior
else if (calculatedColumn5 < calculatedColumn)
{
'Not enough credits.'
}
// this will NEVER fire as all other cases have been tested.
else {
''
}

编辑: 这是有效的。假设2位小数,但你可以乘以100,1000或任何你需要的。 (你甚至可以通过拆分a变量并确定句点背后的长度来自动完成。)

var a = 12.21;
var b = 12.35;
a = Math.round(a * 100);
b = Math.round(b * 100);

var test = a > b ? 'A > B' : 'A < B';

alert(test);