基于javascript中的条件赋值

基于javascript中的条件赋值,javascript,node.js,Javascript,Node.js,我正在调用两个函数并检查给定输入是否有条形码和二维码 var decode = jsQR.decodeQRFromImage(rawImageData.data, rawImageData.width, rawImageData.height); checkBarCode(function(err, result) { if (result) { Result.pages.push({ ValidTicket: decode ? true : fa

我正在调用两个函数并检查给定输入是否有
条形码
二维码

var decode = jsQR.decodeQRFromImage(rawImageData.data, rawImageData.width, rawImageData.height);
checkBarCode(function(err, result) {
    if (result) {
        Result.pages.push({
            ValidTicket: decode ? true : false //here i want to assign true or false if barcode or qr code is present.
        });
    }
});
这是正确的吗

ValidTicket: decode  || result ? true : false

是的,没错。如果解码
结果
为truthy*,则将
赋值为true
;如果两者都是falsy*,则将分配
false

你可能会有人告诉你这样做:

ValidTicket: decode || result
…但这不一定会指定
true
false
,因为JavaScript(这是我贫血的小博客上的一篇文章);相反,如果是真的,它将分配
decode
的值,如果不是,则分配
result
的值。因此,如果您确实需要
true
false
,那么您需要像以前一样使用条件


*关于“truthy”和“falsy”:

“truthy”-当用作布尔值时强制为
true

“falsy”-当用作布尔值时强制为
false


falsy值是
0
NaN
null
未定义
,当然还有
false
。所有其他值都是真实的。

是的,这是正确的。如果解码
结果
为truthy*,则将
赋值为true
;如果两者都是falsy*,则将分配
false

你可能会有人告诉你这样做:

ValidTicket: decode || result
…但这不一定会指定
true
false
,因为JavaScript(这是我贫血的小博客上的一篇文章);相反,如果是真的,它将分配
decode
的值,如果不是,则分配
result
的值。因此,如果您确实需要
true
false
,那么您需要像以前一样使用条件


*关于“truthy”和“falsy”:

“truthy”-当用作布尔值时强制为
true

“falsy”-当用作布尔值时强制为
false


falsy值是
0
NaN
null
未定义
,当然还有
false
。所有其他值都是真实的。

您的赋值确实正确,但我建议使用两个布尔NOT运算符,这稍微简洁一些:

var decode = jsQR.decodeQRFromImage(
  rawImageData.data,
  rawImageData.width,
  rawImageData.height
);

checkBarCode(function(err, result) {
    if (result) {
        Result.pages.push({
            ValidTicket: !!(decode || result)
        });
    }
});

您的赋值确实正确,但我建议改为使用两个布尔NOT运算符,这稍微简洁一些:

var decode = jsQR.decodeQRFromImage(
  rawImageData.data,
  rawImageData.width,
  rawImageData.height
);

checkBarCode(function(err, result) {
    if (result) {
        Result.pages.push({
            ValidTicket: !!(decode || result)
        });
    }
});

对我来说似乎是对的