如何将零数值计为真值?

时间:2016-04-21 11:38:10

标签: javascript operators

我发现自己在过去的几周里遇到了同样的错误,当使用||运算符分配默认值时,如果没有设置第一个值:

(myVariable || 'somestring')

只要myVariable不是0,这就有效,但如果它是0则会出现问题,因为它会将其视为假值。这可以通过检查它是否为零来解决,但它很快变成一个不可读的混乱,例如(myVariable >= 0 ? myVariable : 'somestring')

允许myVariable成为0但仍然算作真值的最简单,最正确的方法是什么?请注意,myVariable必须仍为原始值,因此使用!!运算符不起作用。

4 个答案:

答案 0 :(得分:1)

仅包含逻辑运算符的解决方案:

function getValue(v) {
    return v !== 0 && (v || 'someString') || 0;
}

document.write(getValue(null) + '<br>');
document.write(getValue(false) + '<br>');
document.write(getValue(undefined) + '<br>');
document.write(getValue(0) + '<br>');
document.write(getValue(1) + '<br>');
document.write(getValue('42') + '<br>');

另一项提案

function getValue(v) {
    return v || v === 0 ? v : 'someString';
}

document.write(getValue(null) + '<br>');
document.write(getValue(false) + '<br>');
document.write(getValue(undefined) + '<br>');
document.write(getValue(0) + '<br>');
document.write(getValue(1) + '<br>');
document.write(getValue('42') + '<br>');

答案 1 :(得分:0)

试试这个:

x === 0 || X ? x:y

提供相同的输出:

x!== 0&amp;&amp; (x || y)|| 0;

但我认为更容易阅读

答案 2 :(得分:0)

我的解决方案:

(myVariable.toString() || 'somestring')

你需要尝试/捕捉

答案 3 :(得分:0)

我找到了简单的解决方案:

(myVariable === 0?&#39; 0&#39; :( myVariable ||&#39; somestring&#39;)