javascript如果为空检查
我在JavaScript教程中找到了这段代码。如果值为null,则读取该值。当前值被指定为0,否则将被指定为值。它是如何工作的? 我很困惑,因为没有空值或??代码中的运算符 此.current=value | | 0 这就是javascript中运算符| |的工作方式。它不返回布尔值,而是根据两个操作数是否为真返回它们javascript如果为空检查,javascript,if-statement,conditional-statements,Javascript,If Statement,Conditional Statements,我在JavaScript教程中找到了这段代码。如果值为null,则读取该值。当前值被指定为0,否则将被指定为值。它是如何工作的? 我很困惑,因为没有空值或??代码中的运算符 此.current=value | | 0 这就是javascript中运算符| |的工作方式。它不返回布尔值,而是根据两个操作数是否为真返回它们 如果第一个操作数是真值,它直接返回其值,甚至不看另一个操作数,否则它只返回另一个操作数的值。很简单,右侧的值| | 0计算为this.current。您需要了解的是,右侧首先计算
如果第一个操作数是真值,它直接返回其值,甚至不看另一个操作数,否则它只返回另一个操作数的值。很简单,右侧的值| | 0计算为this.current。您需要了解的是,右侧首先计算布尔值或。这就是JS的工作原理。如果不是布尔值,则返回值而不是真/假 嗯,| |逻辑or运算符的语义是这样的:只要它的左边是真的,它就会短路并返回该值,否则它会返回右边的值 该通用模式利用语义,通过向操作符x | | y传递一个可能的falsy x值和一个默认y。如果x被证明是非伪的,则整个表达式的计算结果为x,否则为y
这里没有提到Null,因为Null是falsy,模式适用于所有falsy值。如果使用===比较某个值,它将比较值和类型。比如说
var a = false;
If(a == null){
//triggered
}
If(a === null){
//not works
}
需要注意的是null是falsy。最好的解释可以在这里找到:或者在这里,因为它解释了truthy/falsy valuesJavaScript的Or运算符不像其他语言那样返回布尔真/假值。相反,当类型转换为布尔值时,它会检查left的计算结果是否为true,如果为true,则返回值而不是布尔值。如果为false,则返回第二个值,而不考虑其值。因此,在JavaScript中,以下两条语句是等效的:$result=$value1 | |$value2$结果=$value1?$value1:$value2;“?:语法的缺点是我们需要专门用一个语句来赋值,这在另一个语句中是不可能的,因此| |可能非常强大。这不是OP的问题。