6.1.关系运算符

用来进行比较的。比较的结果通常是布尔值真和假。

ü ==:相等,只比较值是否相等

ü ===:全等,比较值的同时比较数据类型是否相等

ü !=:不相等,比较值是否不相等

ü !==:不全等,比较值的同时比较数据类型是否不相等

ü 返回值:boolean型

相等运算符,使用两个=表示。

要判断的是两个变量的值,是否相等,如果相等,返回真,否则返回假。

在使用==的时候,是不要考虑类型的,只要两个变量的值是相等,结果就相等。

如果我的需求是,既要保证值相等,还要保证变量的类型也是相等的,js为我们提供了一个绝对等于的运算符 ===

注意:

=、==和===之间的区别。

=表示赋值,==表示判断值是否相等,===表示判断绝对相等(值和类型)。

**! ** **= ** 和!==

!=是==的反操作,!==是===的反操作

在实际开发的时候,==、===和!=使用比较多。!==使用比较少。

>, >=, <, <=

和数学中的比较是一样的。

关系运算符的转换规则:

1) 全等运算符的规则:比较值同时比较类型

img

2) > < >= <= == !=

2-1、 一般情况下,进行比较时,都隐式转为number,然后进行比较;

2-2、 在相等运算符里,如果一端是null和undefined,不转换,直接比较。

即 null只有和undfined进行相等比较时为true,和其他任意内容进行比较都为false;

img

2-3、 比较运算符两端都是字符串时;按照字符串的方式进行比较

img

#6.2.逻辑运算符

在js中, 有如下三个逻辑运算符:

ü && 与

ü || 或

ü ! 非,取反

ü 假值:0 ,NaN,“”,null,undefined

#a.&&

逻辑与操作,表示并且的意思,AND,表示只有当两个或多个条件都同时满足的情况下,结果才为真。

以两个变量的操作为例,进行说明

运算规则如下:

表达式1 表达式2 结果
true true true
true false false
false true false
false false false

总结:

逻辑与找假值;遇到第一个假值就停下来,返回这个假的值;如果没有假值,则返回最后一个值;

#b.||

逻辑或,或者的意思,or。

对于多个条件,只要有一个满足条件,结果就为真,只有所有的条件都为假的时候,结果才为假。

以两个操作数为例进行说明

规则如下:

表达式1 表达式2 结果
true true true
true false true
false true true
false false false

img

总结:

逻辑或找真值,如果遇到第一个真值,就将这个值返回,如果没有找到真值,返回最后一个;

img

#c.!

逻辑非,取反操作,not

!是一个一元运算符(单目),只有一个操作数。

规则如下:

表达式 结果
true false
false true

一元运算符的优先级要比二元和三元的都要高。

说明:

运算符规则:先将值隐式转为布尔类型,再取反;

返回值:返回值一定是布尔类型

关于短路运算的说明:

在&&和||运算时,如果第一个表达式的值就已经能够确定整个运算的结果,那么第二个表达式将不会执行。(类比于日常生活中的比赛,5局三胜,已经胜了三局,后面的比赛将不再进行)。

#6.3.三元运算符

在js中,有且仅有一个三元运算符,就是?:

格式:表达式1 ?表达式2:表达式3

运算规则:如果表达式1的值为真,那么结果就是表达式2,否则结果就是表达式3。

img

三元运算符,能够简化我们的代码,实际上相当于if...else语句。

?:的优先级比较低。

#作业

**v ** ar result = "hello" && 88 && null;

console.log(result); //

​ var result = 0 || 55 === '55' || 'hello';

​ console.log(result); //

​ console.log(!null) //

​ console.log("hello" || null && 3 - 3);

​ console.log(!null || undefined && !3 - '0');

console.log(6 - 6 || 4 > 2 && 3 * 2);

var a = 3,

​ b = "3",

​ c = 6,

​ d = a === b || (b < c && c > a);

​ console.log(d)

var a = "js",

​ b, c = !!a && !b;

​ console.log(c)

​ var x = "5",

​ y = 5,

​ z = "hello",

​ s = x == y && z;

​ console.log(s)

​ console.log(5 > "3")

​ console.log(5 <= undefined)

​ console.log(false > 4)

​ console.log(null <= "0")

​ console.log("21" < "4")

​ console.log("21" < "12")

​ console.log("24" < "26")

​ console.log("a" > "Z") a 97 b98 A 65 B 66

​ console.log("abc" < "bcd")

​ console.log(4 == 5)

​ console.log("4" == 4)

​ console.log("abc" == "ABC")

​ console.log(false == 0)

​ console.log(true == "true")

​ console.log(null == 0) //false

​ console.log(false == null)

​ console.log(null == undefined)

​ console.log(null == "")

​ console.log("" == 0)

​ console.log("4" === 4)

​ console.log(null === undefined)

​ console.log(null !== undefined) true

​ console.log(null == undefined)

​ console.log(null != undefined) false

#小结:

1.=== 、!== 再进行比较时,不转换直接比较

2.> 、<、>=、<= 、== 、!= 一般情况下转number再比较,注意特殊情况null在相等比较时,null==undefined为true;与其他任意值相等比较都为false

\3. && 与找真 ; || 或找假, ! 非先转布尔再取返

4.条件? 表达式1 : 表达式2; 条件为真时执行表达式1,为假执行表达式2

js上 六、运算符-2的更多相关文章

  1. js上 五、运算符-1

    5.1.认识运算符 什么是运算符? 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算. 运算符的应用: 购物车:计算总价,数量: **Js ** 中有哪些运算符? 算术运算符.赋值运算符 ...

  2. 前端(十一)—— JavaScript基础:JS存在的位置、JS变量定义、调试方式、JS数据类型、运算符

    JS存在的位置.JS变量定义.调试方式.JS数据类型.运算符 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMA ...

  3. js 与或运算符 || && 妙用

    js 与或运算符 || && 妙用,可用于精简代码,降低程序的可读性.   首先出个题: 如图: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭头: ...

  4. js中的运算符和条件语句

    js中的运算符大体上可以分为4类:1算术运算符.2一元操作符.3比较运算符.4逻辑运算符. 算术运算符一般指的是加减乘除求余这五种操作符:+,-,*,/,%.通过算术运算符可以对js中的变量进行操作. ...

  5. JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构

    JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...

  6. JS中的运算符和JS中的分支结构

    JS中的运算符 1.算术运算(单目运算符) + .-.*. /. %取余.++自增 .--自减 +:两种作用,链接字符串/加法运算.当+两边全为数字时,进行加法运算:当+两边有任意一边为字符串时,起链 ...

  7. 让你彻底搞懂JS中复杂运算符==

    让你彻底搞懂JS中复杂运算符== 大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容易让人犯错,从而成为JavaScript中“最糟糕的特性”之一. 在仔细阅读了ECMA ...

  8. JS基础_运算符的优先级

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 使用ajaxfileupload.js上传文件

    一直以来上传文件都是使用form表单上传文件,也看到过有人使用js上传文件,不过看起来蛮简单的也就没有怎么去理会.今天突然要使用这种方式上传文件,期间还遇到点问题.因此就记录下来,方便以后遇到这样的问 ...

随机推荐

  1. Java学习之Swing Gui编程

    Java学习之Swing Gui编程 0x00 前言 前面的使用的Gui是基于Awt 去进行实现,但是在现实写Gui中 AWT实际运用会比较少. 0x01 Swing 概述 AWT 和Swing 区别 ...

  2. 使用CleanMyMac快速管理应用程序 优化Mac

    CleanMyMac作为一款专业的苹果电脑清理软件,它不仅仅能单纯的卸载不用.少用的应用,同时还支持:1.清理应用程序的数据文件,将应用重置回初始状态,减少空间占用:2.自动检查应用更新,保持应用的最 ...

  3. 完全图的最短Hamilton路径——状压dp

    题意:给出一张含有n(n<20)个点的完全图,求从0号节点到第n-1号节点的最短Hamilton路径.Hamilton路径是指不重不漏地经过每一个点的路径. 算法进阶上的一道状压例题,复杂度为O ...

  4. 6. Git工作流

    6.1 git工作流理解 在项目开发过程中使用 Git 的方式 6.2 git工作流分类 集中式工作流 像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体.所有修改都提交到 Maste ...

  5. 抖音短视频爆火的背后到底是什么——如何快速的开发一个完整的直播app

    前言 今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,今天我来教你从零开始搭建一个完整的直播app,希望能帮助 ...

  6. Razorpay支付对接,JAVA对接篇

    Razorpay 作为印度本土的一家支付公司,类似中国的支付宝 微信,本篇记录一下对接印度第三方支付公司 准备工作: 注册公司 申请Razorpay账号 申请正式环境 Razorpay工作台: 获取k ...

  7. java17(面向对象)

    1.面向过程:所有事情都是按顺序一件件做,未知主体 买菜,做饭,吃饭,洗碗 面向对象:将功能封装到对象之中,让对象去实现功能 去饭馆,告诉服务员要吃啥,然后等着端上来. 面向对象的目的: 复杂的东西简 ...

  8. 3D网页小实验——将txt配置文本转化为3D陈列室

    设计目标:借鉴前辈编程者的经验将简单的配置文本转化为3D场景,并根据配置文件在场景中加入图片和可播放的视频,最终形成可浏览的3D陈列室. 一.使用效果 1.txt配置文件: (博客园的富文本编辑器会改 ...

  9. 什么是SSL双向认证,与单向认证证书有什么区别?

    SSL/TLS证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是, ...

  10. Jdk源码-集合类主要原理和解析

    写在前面 熟悉Jdk原理的重要性不言而喻,作为Java开发者或者面试者,了解其实现原理也显得更为装逼,在Java读书计划我写到了,它是面试中最基础的一部分,所以单独拿出来做个总结,为了更好滴理解和学习 ...