我正在调用两个函数并检查给定的输入是否有barcode
和qr 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
答案 0 :(得分:2)
是的,这是正确的。如果 <{strong> decode
或result
是真正的*,您将指定true
;如果两者都是假的*,您将分配false
。
你可能会有人告诉你这样做:
ValidTicket: decode || result
...但由于JavaScript的curiously-powerful ||
operator (这是我贫血的小博客上的帖子),因此不一定会分配true
或false
;相反,它会指定decode
的值(如果它是真的),如果没有,则指定result
的值。因此,如果您确实需要true
或false
,则需要像使用条件一样使用条件。
*关于“truthy”和“falsy”:
“truthy” - 用作布尔值时强制true
的值
“falsy” - 用作布尔值时强制为false
的值
虚假值为0
,""
,NaN
,null
,undefined
和(当然)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)
});
}
});