逻辑运算符通常用于布尔型(逻辑)值。这种情况下,它们返回一个布尔值。它经常和关系运算符一起配合使用。“&&” 、“!”和“ ||” 运算符会返回一个指定操作数的值,因此,这些运算符也用于非布尔值。这时,它们也就会返回一个非布尔型值。

  逻辑与(&&)

    逻辑与是由两个和号(&)表示,有两个操作位数,只有当左右两边都时成立,整个条件才成立.否则就是不成立。它属于一个短路操作,如果第一个条件就可决定结果,那就不用操作第二个条件了。它可以和多个运算符连用,返回第一个布尔值为false的表达式。可以取代if结构,也可以用于回调函数中。

    <script>
var i = 1;
var n = 1;
var result1 = (true && i++);//第一个条件成立,操作第二个条件
var resutl2 = (false && ++n);//第一个条件不成立,直接退出
console.log(i,n); //2 1
</script>
    <script>
//左侧为真,返回右侧的值,左侧为假,返回左侧的值 false,undefined,null,0,NaN,
'' 这些为假其余为真;可以多个连用,返回第一个布尔值为false的表达式的值
console.log('string' && ''); //''
console.log('string' && 1 + 2);//3
console.log('' && undefined);//''
console.log(false && null);//false
console.log(0 && 'string');//0
console.log(NaN && false);//NaN
console.log(true && 'string' && undefined && '' && 2); //undefined      
</script>
    <script>
if (a == b) {
dosomething();
}//等价于
a == b && dosomething(); function fn(a){
if(a){
a();
}
}//等价于
function fn(a){
a && a();
}
</script>

  逻辑或(||)

    有两个操作数,只有两个都条件都不成立时,结果才是不成立,否则都是成立的。它也是一种短路操作。也可多个连用,返回第一个布尔值为true的表达式的值,常用于为变量设置默认值。左侧为真,返回左侧的值,左侧为假,返回右侧的值。

<script>
//左侧为真,返回左侧的值,左侧为假,返回右侧的值
console.log('string' || '');//string
console.log('string' || 'number');//string
console.log(undefined || 2);//2
console.log(NaN || false);//false console.log('' || undefined || false || 3 || string); //3 var n = 1;
var m = 1;
var result = (true || ++n);//true为真,不执行后面的操作
var result = (false || --m);//false为假,执行行后面操作
console.log( n,m); //1 0 //如果没有向参数a中传入值,则将参数设置为空对象
function fn(a){
a=a || {};
}
</script>

  逻辑非(!)

    逻辑非是一个叹号,无论这个值是什么数据类型,使用这个操作符后都会返回一个布尔值。逻辑非操作符会先将它的操作数转换成一个布尔值然后再对其求反。如果同时用两个逻辑非的话那就相当于调用Boolean()方法,负负得正。一般用于控制循环。

    <script>
console.log(!!NaN); //false
console.log(!![]); //true
console.log(
!! new Boolean(false)); //true
</script>

js之运算符(逻辑运算符)的更多相关文章

  1. JS 比较运算符 逻辑运算符

    逻辑运算符 三元运算符 摘自:http://www.w3school.com.cn/js/js_comparisons.asp

  2. js基础——运算符

    爱创课堂前端培训--js基础 运算符一.运算符 运算符(Operators,也翻译为操作符),是发起运算的最简单形式.分类:(运算符的分类仁者见智,本课程进行一下分类.)数学运算符(Arithmeti ...

  3. Js的运算符

    JS的运算符 1.运算符的分类: a) 算数运算符 b) 字符串运算符 c) 赋值运算符 d) 比较运算符 e) 逻辑运算符 f) 位运算符 g) 其他运算符 2.算数运算符 + 加法运算符 - 减法 ...

  4. js 的概念和声明-js 的变量-js 的运算符和逻辑结构-js 的数组

    js 的概念和声明Js的概念和声明:问题:在网页的发展历程中,发现网页不能对用户的数据进行自动校验,和提供一些特效造成用户体验极差解决:使用JavaScript作用:可以让网页和用户之间进行直接简单的 ...

  5. JS中的逻辑运算符&&、||

    原文:JS中的逻辑运算符&&.|| 1.JS中的||符号: 运算方法: 只要"||"前面为false,不管"||"后面是true还是false, ...

  6. js中的逻辑运算符详解(||、&&、!)

    视频地址:https://www.bilibili.com/video/BV1Y7411K7zz?p=1 一直以来都没弄清楚js中的逻辑运算符是怎么回事 , 一直都以为他们的用法和java一样 , 今 ...

  7. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

    // Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...

  8. js之运算符其它运算符(三元运算符,逗号运算符,void运算符,typeof,delete运算符)

    Javascript支持很多其它的运算符,具体如下: 一.条件运算符(?:) 条件运算符是Javascript中唯一的三个操作数的三元运算符,有时会直接称做是“三元运算符”. 基本格式:conditi ...

  9. Golang的运算符-逻辑运算符

    Golang的运算符-逻辑运算符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.逻辑运算符概述 !: 非运算符,表示NOT(有种取反的意思),如"!ture" ...

  10. JS中的逻辑运算符&&、||,位运算符|,&

    1.JS中的||符号: 运算方法: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值. 只要“||”前面为true,不管“||”后面是true还是fals ...

随机推荐

  1. 发布Rest风格的WebService的SpringBoot极简例子

    JDK:1.8.0_212 IDE:STS4(Spring Tool Suit4 Version: 4.3.2.RELEASE) 工程下载:https://files.cnblogs.com/file ...

  2. IIS asp.net 中出现未能加载文件或程序集“System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。系统找不到指定的文件。

    分析器错误消息: 未能加载文件或程序集“System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或 ...

  3. java源码-ConcurrentHashMap分析-1

    ConcurrentHashMap源码分析 版本jdk8 摈弃了jdk7之前的segement段锁: 首先分析一下put方法,大致的流程就是首先对key取hash函数 判断是否first节点是否存在 ...

  4. Python实现将不规范的英文名字首字母大写

    Python实现将不规范的英文名字首字母大写 这篇文章给大家主要介绍的是利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.文中给出了三种解决方法,大家可以根据需要选 ...

  5. shader飞线改进版

    项目github地址:https://github.com/ecojust/flyline 前面写过一个飞线(基于THREE.Line进行的颜色变化),只是简单地将可视区片元颜色的alpha通道值设为 ...

  6. ubuntu下终端代理方法

    起因 正常使用shadowsocks后只能在浏览器中访问google,而终端中却无法使用.   解决方法 ProxyChains是一个终端代理方案,使用比较简单. 在源里有这个软件,直接安装 sudo ...

  7. 串的应用与kmp算法讲解--学习笔记

    串的应用与kmp算法讲解 1. 写作目的 平时学习总结的学习笔记,方便自己理解加深印象.同时希望可以帮到正在学习这方面知识的同学,可以相互学习.新手上路请多关照,如果问题还请不吝赐教. 2. 串的逻辑 ...

  8. mariadb(第二章)增删改 MariaDB 数据类型

    MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型 整数:int, bit 小数:de ...

  9. Leetcode之广度优先搜索(BFS)专题-773. 滑动谜题(Sliding Puzzle)

    Leetcode之广度优先搜索(BFS)专题-773. 滑动谜题(Sliding Puzzle) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary ...

  10. Windows Server 中配置权威时间服务器

    0" style="box-sizing: inherit; outline: none;"> 若要配置 Windows 时间服务以使用内部硬件时钟,请使用下列方法 ...