我有以下JavaScript / jQuery代码:
if (isVariance && value)
tableCell.addClass('NonZeroVariance');
其中:
isVariance
== true
和value
== "0.00"
。
(isVariance && value)
== "0.00"
。
(isVariance && !!value)
== true
。
if
条件的计算结果为true,并且该类已添加到tableCell
。
所以,我的期望是零被解释为假,而"0.00"
将被评估为false
。但这不是这里发生的事情。有人可以告诉我为什么吗?
答案 0 :(得分:2)
是的,似乎value
是一个字符串。虽然数字0.00
将评估为false,但字符串"0.00"
的计算结果为true。
解决方案是首先将字符串转换为数字,然后执行相同的测试。
value = Number(value);
if (isVariance && value)
tableCell.addClass('NonZeroVariance');
修改强>
字符串"0.00"
的计算结果为true的原因是:如果参数为空String(其长度为零),则结果为false;否则结果是真的。 - http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/