如果co.chkShowRSB
为false,预期结果是什么?我希望它是假的,但这是它的工作方式吗?为什么?
var test = chkShow:co.chkShowRSB || true;
答案 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