深入理解逻辑表达式的用法 与或非的用法


Posted in Javascript onJune 06, 2016

先说逻辑与(&&),它可以从三个层次进行理解

第一个层次最简单,就是简单的布尔值之间的逻辑与,就是左值和右值都是true时,返回true,两边都是false或者两边的值其中一边是fasle,就返回false;(AND操作);

第二个层次,(false,null,indefined,0,-0,NaN和""这些都是假值,其他所有的值包括对象都是真值),对这些"真值"和"假值"进行AND操作,返回一个"真值"或者"假值";

值得注意的是,(&&)并不返回一直的是布尔值,他会返回第二个层次出现的真值或者假值,,但是这些"真值"和"假值"到底是什么值呢?所以引入第三层的理解

第三个层次的理解,其实也简单,当语句中的左操作数是假值时,就不对语句的右操作数进行运算了,直接返回左操作数作为表达式的运算结果;当左操作数是真值时,将右操作数的值返回,作为表达式的运算结果,

举个例子如下:

var o={s:1};       //创建一个对象 
var p=null;         //创建了一个null 
o&&o.s            //返回1,应为o是真值,所以返回o.s的值 
p&&p.x            //返回null,应为p是假值,所以不去计算p.x,直接返回p的值 <BR>o&&o.b;           //这样会抛出一个类型错误异常,因为o为真值,需要返回o.b,但是o.b并不存在,

这样就好理解了

虽然&&可以用来返回真值和假值,但是大多数情况下,真值就是true,假值就是false;

再说一下逻辑或(||),举一反三,逻辑与也有与逻辑或类似的三个层次理解,就不详细写了

逻辑与最常用的方法是从一群备选的操作数中选出一个真值的表达式

举个例子

var min =min_value||sum.min_value||100;

先找到min_value,如果它没有定义,那就在sum对象中查找,如果还没有,只能给它赋值一个死值100,

这种方法通常用在函数中给参数设置默认值

举个例子

function add(a,b){
   b=b||0;
   return a+b;  
}

当不对b设置初始值时,b等于0;add函数返回的就是a+0,也就是a的值;

逻辑非(!)

他的目的是将操作数的布尔值进行求反,例如:如果x是真值,!x返回false,如果x是假值,!x返回true。

返回布尔值时,已经将这些真值啊,假值啊转换成了布尔值,再对其进行求反。

这里介绍一种!的常见用法

有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,就使用!!,

例如,检测一个从一个函数返回的值student是否是个有效值,就使用  !!student,如果他返回是true,那么他就是一个有效值。

以上这篇深入理解逻辑表达式的用法 与或非的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
字符串的replace方法应用浅析
Dec 06 Javascript
javascript获取作用在元素上面的样式属性代码
Sep 20 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
js图片模糊切换显示特效的方法
Feb 17 Javascript
jQuery插件StickUp实现网页导航置顶
Apr 12 Javascript
轻松实现Bootstrap图片轮播
Apr 20 Javascript
聊一聊jQuery插件uploadify使用方法
Aug 24 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 Javascript
运用js实现图层拖拽的功能
May 24 Javascript
vue+elementUI组件table实现前端分页功能
Nov 15 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 #Javascript
jquery树形菜单效果的简单实例
Jun 06 #Javascript
逻辑表达式中与或非的用法详解
Jun 06 #Javascript
node.js 中国天气预报 简单实现
Jun 06 #Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 #Javascript
js获取元素的外链样式的简单实现方法
Jun 06 #Javascript
node.js cookie-parser之parser.js
Jun 06 #Javascript
You might like
php 将excel导入mysql
2009/11/09 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
自定义django admin model表单提交的例子
2019/08/23 Python
详解python中各种文件打开模式
2020/01/19 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
中学生演讲稿
2014/04/26 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL