根据javascript中的条件分配值

时间:2017-03-26 11:47:55

标签: javascript node.js

我正在调用两个函数并检查给定的输入是否有barcodeqr code

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

2 个答案:

答案 0 :(得分:2)

是的,这是正确的。如果 <{strong> decoderesult是真正的*,您将指定true;如果两者都是假的*,您将分配false

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

ValidTicket: decode || result

...但由于JavaScript的curiously-powerful || operator (这是我贫血的小博客上的帖子),因此不一定会分配truefalse ;相反,它会指定decode的值(如果它是真的),如果没有,则指定result的值。因此,如果您确实需要truefalse,则需要像使用条件一样使用条件。

*关于“truthy”和“falsy”:

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

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

虚假值为0""NaNnullundefined和(当然)false。所有其他价值都是真实的。

答案 1 :(得分:1)

您的作业确实可以正常工作,但我可能会建议使用两个布尔NOT运算符,这稍微有点粗略:

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

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