js布尔操作符小记

    为了提高学习效率断了下网,没想到这么渣渣网断了之后就连不上了=。=废话少说,开始正题。

    重新看红皮书,重点记一下布尔操作符。布尔操作符有 !,&&,||、

       一,逻辑非

        先说说 !, 非是布尔操作符中唯一一个会把所有数据类型转换为布尔类型的。拿几个特殊值为例:

          如果操作数为 null,则 !null返回 true

          如果操作数为 undefined,则 !undefined 返回true

          如果操作数为 NaN,则 !NaN 返回true

          有了 逻辑非,就可以用两个!!来判断一个数据类型的布尔值了=.=(表问我怎么突然用这么傲娇的符号)。

      二,逻辑与

        逻辑与是个短路操作,即如果第一个操作符是null/undefined/NaN 那么 就直接返回 null/undefined/NaN 。

        如果第一个操作数是对象,则返回第二个操作数。如果两个操作数都是对象,那么返回第二个操作数。(注意,返回操作数不是布尔值!!!!!)。

      三,逻辑或

         如果第一个操作数是对象,则返回第一个操作数。如果第一个操作数求值结果为false,则返回第二个操作数。如果两个操作数是对象则返回第一个操作数。

          如果两个操作数都是null/NaN/undefined,则返回null/NaN/undefined。

         所以我们可以利用逻辑或的这一行为,避免给变量赋null/undefined。例如 var value = preferredObject  ||  backupObject

    之前一直以为 如果不是特殊值得话,布尔操作符都会返回布尔值。果然人丑就要多读书。

时间: 2024-10-12 17:06:50

js布尔操作符小记的相关文章

js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则

最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅资料后对此进行一些总结. 等性操作符(==) 1.比较的类型是String.Number.Boolean这几个基本类型时 当是这几中类型进行比较时,会先将两边转换成数字,在进行比较. 1 console.log(1 == true); // true转换成数字为1,因此结果为true 2 3 con

JS基本概念 -- 操作符 -- 布尔操作符

布尔操作符一共有三个: 非(Not).与(AND).或(OR) 逻辑非逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值.无论这个值是什么类型,这个操作符都会返回一个布尔值.逻辑非操作符首先将他的操作数转换为一个布尔值,再对其求反. //1.如果操作数是一个对象,返回false var o = { name: "ss" }; alert(!o); //false var o1 = {}; alert(!o1); //false //2.如果操作数是一个空字符串,

RxJava操作符——条件和布尔操作符(Conditional and Boolean Operators)

RxJava系列教程: 1. RxJava使用介绍 [视频教程] 2. RxJava操作符 ? Creating Observables(Observable的创建操作符) [视频教程] ? Transforming Observables(Observable的转换操作符) [视频教程] ? Filtering Observables(Observable的过滤操作符) [视频教程] ? Combining Observables(Observable的组合操作符) [视频教程] ? Erro

Javascript 布尔操作符总结

在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了.在像javascript这样弱类型语言更有其妙用,让我们的代码,简捷可靠.布尔操作符一共有3个: 与.或.非. 特性: 非 先来讨论一下,最简单的‘非!’ 相对与和或来说,非更简单一点,先把操作数转换为布尔值,再取反,值不是true,就是false. 结论:逻辑非的返回值最后只有两个:true or false.       与和或: 而与和或并不总是返

js 正则学习小记之匹配字符串优化篇

昨天在<js 正则学习小记之匹配字符串>谈到 /"(?:\\.|[^"])*"/ 是个不错的表达式,因为可以满足我们的要求,所以这个表达式可用,但不一定是最好的.从性能上来说,他非常糟糕,为什么这么说呢,因为 传统型NFA引擎 遇到分支是从左往右匹配的,所以它会用 \\. 去匹配每一个字符,发现不对后才用 [^"] 去匹配.比如这样一个字符串: "123456\'78\"90"共 16 个字符,除了第一个 " 直接

js 正则学习小记之匹配字符串

原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高亮练手,所以用js代码当作例子) var str1 = "我是字符串1哦,快把我取走", str2 = "我是字符串2哦,快把我取走"; 比如这样一个字符串,匹配起来很简单 /"[^"]*"/g 即可. PS: 白色截图是 chrome 3

布尔操作符解析

在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了. 布尔操作符一共有3个: 非.与.或 1.逻辑 非 逻辑非用!表示,可以应用与ECMAScript的任何类型的值,逻辑非操作返回的是一个布尔值(true/false).该操作符首先会将它的操作数转换为一个布尔值,然后再对其求反. 下面说明下Boolean()转型函数的一组规则. 数据类型 转换为true的值 转换为false的值 Boolean true

布尔操作符

and . or .not  三个布尔操作符号用于比较布尔值 1.二元布尔操作符 如果两个布尔值都为True, and操作符就将表达式求值为True,否则求值为False:如下: >>> True and True True >>> True and False False >>> 以下为and的操作符的比较: 表达式 求值 True and True True True and False False False and True False Fal

Js 布尔值操作符 &amp;&amp; 和 ||

在js中,逻辑与(&&) 和 逻辑或(||)可以对任意的数据类型进行操作,而在高级程序设计中只给出了一系列的规则,并没有进行解释,所以经常记不住.在读其它书籍的时候,读到了它的原理,其实也很简单,不过还是要记一下. 逻辑与在对其它数据类型进行操作的时候,会对第一个操作数先进行布尔类型进行转换,看看它是true,还是false, 如果是false的话,它就会返回第一个操作数,如果是true, 它就会对第二个操作符进行计算,返回第二个操作符,因为它是一种短路操作. 如果第一个操作数是对象,它就