Javascript系列(一):布尔操作符的短路操作

    科技2025-08-09  6

    布尔操作符一般具有短路原理:

    若第一操作数能决定结果,就不会判断第二操作数

    在Javascript中,由于布尔操作符可以应用于任何类型的操作数,所以返回的结果不仅仅是布尔值,这对优化代码提供了一些方法。 合理使用布尔操作数能够减少if…else等语句的使用,大大减少了代码量,增强了代码的简洁性,但也在一定程度降低了可读性。所以,在实际使用中要有所取舍。

    各类操作数的布尔值

    前面提过,在Javascript中的逻辑操作数可以是任意类型的,下表列举各类操作数的布尔值:

    类型布尔值对象true空字符串false字符串true数值0false非0数值truenullfalseNaNfalseundefinedfalse

    逻辑非 !

    对上表取反

    逻辑与 &&

    由于Javascript中操作数可以是不同类型的,当操作数不为false和true的其他类型时,所以会有一些特殊的规则:

    当操作数中存在对象时: 第一操作数是对象:返回第二操作数第二操作数是对象:第一操作数是true时返回第二操作数两个操作数都是对象:返回第二操作数 当操作数存在null NaN undefined时: 第一操作数是null:返回null第一操作数是NaN:返回NaN第一操作数是undefined:返回undefined

    以上归纳过于繁琐,用一个万能公式一:即无论什么类型,当第一操作数的布尔值是true,返回第二类型值,当第一操作数的布尔值是false,返回第一类型值。

    逻辑或 ||

    当操作数中存在对象时: 第一操作数是对象:返回第一操作数第二操作数是对象:第一操作数是true时返回第一操作数,第一操作数是false时返回第二操作数两个操作数都是对象:返回第一操作数 当操作数存在null NaN undefined时: 两个操作数都是null:返回null两个操作数都是NaN:返回NaN两个操作数都是undefined:返回undefined

    同样,以上归纳过于繁琐,用一个万能公式二:即无论什么类型,当第一操作数的布尔值是true,返回第一类型值,当第一操作数的布尔值是false,返回第二类型值。

    应用示例

    举例:

    if(a > b){ a = a + b; } // 用&&改写 a > b && (a = a + b)// 使用||改写 !(a > b) || (a = a + b)
    Processed: 0.012, SQL: 8