javascript基础学习系列二十一:逻辑或

逻辑或操作符由两个管道符(||)表示,比如:

let result = true || false;

逻辑或操作符遵循如下真值表:

在这里插入图片描述
如果有一个操作数不是布尔值,那么逻辑或操作符也不一定返回布尔值。它遵循如 下规则。

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数求值为 false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个操作数。
  • 如果两个操作数都是 null,则返回 null。
  • 如果两个操作数都是 NaN,则返回 NaN。
  • 如果两个操作数都是 undefined,则返回 undefined。

同样与逻辑与类似,逻辑或操作符也具有短路的特性。只不过对逻辑或而言,第一个操作数求值为true,第二个操作数就不会再被求值了。

let found = true;
let result = (found || someUndeclaredVariable); // 不会出错 console.log(result); // 会执行

跟前面的例子一样,变量 someUndeclaredVariable 也没有定义。但是,因为变量 found 的值 为 true,所以逻辑或操作符不会对变量 someUndeclaredVariable 求值,而直接返回 true。假如把 found 的值改为 false。

let found = false;
let result = (found || someUndeclaredVariable); // 这里会出错 console.log(result); // 不会执行这一行

变量 myObject 会被赋予两个值中的一个。其中,preferredObject 变量包含首 选的值,backupObject 变量包含备用的值。如果 preferredObject 不是 null,则它的值就会赋给 myObject;如果 preferredObject 是 null,则 backupObject 的值就会赋给 myObject。这

种模 式在 ECMAScript 代码中经常用于变量赋值。、

1. 乘性操作符:

ECMAScript 定义了 3 个乘性操作符:乘法、除法和取模。这些操作符跟它们在 Java、C 语言及 Perl 中对应的操作符作用一样,但在处理非数值时,它们也会包含一些自动的类型转换。

如果乘性操作符有 不是数值的操作数,则该操作数会在后台被使用 Number()转型函数转换为数值。这意味着空字符串会 被当成 0,而布尔值 true 会被当成 1。

乘法操作符在处理特殊值时也有一些特殊的行为。

  • 如果操作数都是数值,则执行常规的乘法运算,即两个正值相乘是正值,两个负值相乘也是正值,正负符号不同的值相乘得到负值。如果 ECMAScript 不能表示乘积,则返回 Infinity 或-Infinity。
  • 如果有任一操作数是 NaN,则返回 NaN。
  • 如果是 Infinity 乘以 0,则返回 NaN。
  • 如果是 Infinity 乘以非 0 的有限数值,则根据第二个操作数的符号返回 Infinity 或-Infinity。
  • 如果是 Infinity 乘以 Infinity,则返回 Infinity。
  • 如果有不是数值的操作数,则先在后台用 Number()将其转换为数值,然后再应用上述规则。

猜你喜欢

转载自blog.csdn.net/wanmeijuhao/article/details/135449949