美文网首页
第3章:js 逻辑‘与和或’的笔记

第3章:js 逻辑‘与和或’的笔记

作者: 大香蕉s | 来源:发表于2016-12-19 23:55 被阅读0次

逻辑‘与和或’操作

  1. js 中的逻辑‘与和或’操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。
  • 逻辑与 为例, 第一操作数为false,则返回 false,不执行第二个操作数(即使第二个操作数 有错误)
    var a = false
    var result = (a && someUndefinedVar)   //  没有发生错误,因为 someUndefinedVar 没有执行
    var b = true
    var result = (b && someUndefinedVar)   //  发生错误:  someUndefinedVar is no defined
  • 同理对于 逻辑或, 第一操作数为true,则返回 true,不执行第二个操作数(即使第二个操作数 有错误)
    <br >
  1. 逻辑‘与和或’操作可以适用于任何类型的操作数,而不仅仅是布尔值。
    ** 在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值 **
    // 以 逻辑与 为例 
   var obj1 = {
       a: 'b'
   }
   var c = 'Halo'

   var r1 = obj1 && c 
   console.log(r1)  // r1 = c ,因为 obj1 转换为布尔值为 true, 则接着执行第二个操作数,结果返回第二个操作数

   var t = true
   var r2 = t && obj 
   console.log(r2) // r2 = obj1 ,根据笔记 2 返回 obj1

   var obj2 = {
       d: 'e'
   }
   var r3 = obj1 && obj2
   console.log(r3) // r3 = obj2, 因为 obj1 转换为布尔值为 true,接着执行第二个操作数,返回 obj2

<br >

  1. 逻辑 **‘与’ ** 中的某一操作数为 null undefined NaN,则对应返回 null undefined NaN
  • 若 逻辑操作 中既有 null 也有 NaN, 则根据短路操作先遇到谁就返回谁
// 例
var r = null  && undefined
console.log(r) // r = null, 因为先遇到 null ,由于短路操作,第二操作数不执行,直接返回 null

<br >

  1. 逻辑 ‘或’ ** 中的两个操作数都**为 null undefined NaN,才返回 null undefined NaN
  • 若 逻辑操作 中既有 null 也有 NaN, 则根据**笔记 2 **返回第二个操作数
// 例
var r = null  || undefined
console.log(r) // r = undefined, 因为先遇到 null ,null 转化为布尔值为 false,所以接着执行第二操作数,根据笔记 2 返回第二操作数

<br >

相关文章

网友评论

      本文标题:第3章:js 逻辑‘与和或’的笔记

      本文链接:https://www.haomeiwen.com/subject/qgkxvttx.html