如果变量为false,它将在Javascript中传递

时间:2012-09-26 10:38:39

标签: javascript

如果co.chkShowRSB为false,预期结果是什么?我希望它是假的,但这是它的工作方式吗?为什么?

var test = chkShow:co.chkShowRSB || true;

4 个答案:

答案 0 :(得分:1)

在您的情况下为true,因为true||(所谓的“短路或')运算符的第二个操作数。通用规则是......

var x = a || b; // = a (and b won't be evaluated), if it's a truthy value, b otherwise
var y = a && b; // = a (and b won't be evaluated), if it's a falsy value, b otherwise.

答案 1 :(得分:1)

false || true 

是真的。没有带有“或true”的布尔术语可能为假的情况。

答案 2 :(得分:0)

你应该使用第三级运营商。如果chkShow:co.chkShowRSB是布尔值,则代码将始终返回true;

var test =  chkShow:co.chkShowRSB == false ? false : true;

答案 3 :(得分:0)

好的,所以你现在得到的照片x = false || true;指的是真的。为什么?知道使用短路操作符与执行操作相同很容易:

x = (false ? false : true);

但是,它主要用于设置函数参数的默认值,所以我猜你假设x被赋予第二个操作数,如果第一个是undefined。除了明确检查它们之外,没有办法专门过滤掉未定义的值。然后你应该使用:

x = val === undefined ? defaultVal : val;

或者,因为undefined不一定是undefined,而您希望绝对确定:

x = (function(val,undefined)//second argument will be the true undefined value
{
    return (val === undefined ? defaultVal : val);
})(val);//don't pass second argument