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

Js 布尔值操作符的更多相关文章
- js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...
- JS布尔值(Boolean)转换规则
原文作者: louis 原文链接: http://louiszhai.github.io/2015/12/11/js.boolean/ 语法 众所周知, JavaScript有五个基本的值类型:num ...
- js布尔值转化
JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值.转换规则是除了下面六个值被转为false,其他值都视为true. undefined null false 0 Na ...
- js 布尔值作为开关判断
var flag = true; $("#more_info").click(function() { if( flag ){ $("#more_xl_more" ...
- js中对象转化成字符串、数字或布尔值的转化规则
js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...
- js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则
最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅 ...
- JS规则 多样化的我(变量赋值)我们使用"="号给变量存储内容,你可以把任何东西存储在变量里,如数值、字符串、布尔值等,
多样化的我(变量赋值) 我们可以把变量看做一个盒子,盒子用来存放物品,那如何在变量中存储内容呢? 我们使用"="号给变量存储内容,看下面的语句: var mynum = 5 ; / ...
- js中布尔值为false的六种情况
下面6种值转化为布尔值时为false,其他转化都为true 1.undefined(未定义,找不到值时出现) 2.null(代表空值) 3.false(布尔值的false,字符串"false ...
- JS基础_非布尔值的与或运算
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- python之type函数
python 的type 函数 的介绍的 下面就是此函数的参数 三个参数的意义 '''type(class_name, base_class_tuple, attribute_dict)cla ...
- face detection[FaceBoxes]
该文来自<FaceBoxes: A CPU Real-time Face Detector with High Accuracy>.该文时间线是2018年1月 虽然人脸检测上随着深度学习的 ...
- 狄利克雷卷积&莫比乌斯反演总结
狄利克雷卷积&莫比乌斯反演总结 Prepare 1.\([P]\)表示当\(P\)为真时\([P]\)为\(1\),否则为\(0\). 2.\(a|b\)指\(b\)被\(a\)整除. 3.一 ...
- IntelliJ IDEA(一) :安装与破解
前言 我是从eclipse转IDEA的,对于习惯了eclipse快捷键的我来说,转IDEA开始很不习惯,IDEA快捷键多,组合多,记不住,虽然可以设置使用eclipse的快捷键,但是总感觉怪怪的.开始 ...
- Google 宣布在 4 月 1 日关闭站内搜索
今春,Google 计划终止又一项产品,它就是“站内搜索”(Site Search)功能.这项产品主要出售给 web 出版商,让它们可以在自家网站内运用业内领先的搜索技术.虽然该公司并未公开宣布此事, ...
- linux screen 工具
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- 实现一个简单的ConnectionPool
看了一圈, 没看到稍微好用的ConnectionPool, 除了一个aiomysql, 但是这个是异步的, 我暂时没有用到这么高版本的Python, 所以就动手造一个轮子. 原理比较简单, 先造一个线 ...
- 计算机名称改名之后,tfs连接问题
计算机名称改名之后,我们发现tfs连接会有问题 打开vs下的“开发人员命令提示”执行下面两条语句: 1.tf workspaces 2.tf workspaces /collection:http:/ ...
- Dedekind整环上的有限生成模的分类
以下内容本想载于我的代数数论初步当中,但是与整体风格不符,所以换到这里来,为了排版上的方便,在注释掉之前用截图留存. 附:参考文献
- H5 59-浮动元素的脱标
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...