Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript如果为空检查_Javascript_If Statement_Conditional Statements - Fatal编程技术网

javascript如果为空检查

javascript如果为空检查,javascript,if-statement,conditional-statements,Javascript,If Statement,Conditional Statements,我在JavaScript教程中找到了这段代码。如果值为null,则读取该值。当前值被指定为0,否则将被指定为值。它是如何工作的? 我很困惑,因为没有空值或??代码中的运算符 此.current=value | | 0 这就是javascript中运算符| |的工作方式。它不返回布尔值,而是根据两个操作数是否为真返回它们 如果第一个操作数是真值,它直接返回其值,甚至不看另一个操作数,否则它只返回另一个操作数的值。很简单,右侧的值| | 0计算为this.current。您需要了解的是,右侧首先计算

我在JavaScript教程中找到了这段代码。如果值为null,则读取该值。当前值被指定为0,否则将被指定为值。它是如何工作的? 我很困惑,因为没有空值或??代码中的运算符

此.current=value | | 0

这就是javascript中运算符| |的工作方式。它不返回布尔值,而是根据两个操作数是否为真返回它们


如果第一个操作数是真值,它直接返回其值,甚至不看另一个操作数,否则它只返回另一个操作数的值。

很简单,右侧的值| | 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的问题。