javascript的比较运算符
- > 大于运算符
- < 小于运算符
- <= 小于等于运算符
- >= 大于等于运算符
- == 相等运算符
- === 严格相等运算符
- != 不相等运算符
- !== 严格不相等运算符
非相等的比较
对于非相等的比较,算法是先看两个运算子是否全是字符串,如果都是字符串的话,就按照Unicode码的大小一个字符一个字符来比较;否则的话,将两个运算子都转成数值,再比较大小
- 字符串的比较是按照字典(Unicode)顺序进行比较的.
- 非字符串的比较
- 原始值类型
先转换成数值然后再比较
注意点: 任何值与NaN(包括NaN)比较,都返回false - 对象
如果运算子是对象,会转为原始类型的值再进行比较
对象转换为原始类型的值,算法是先调用对象的valueOf方法;如果返回的还是对象,再接着调用toString方法。var x = [2];
// 输出true
// x的valueOf()返回[2],是对象类型,所以再调用toString(),结果是"2">"11",因为两个都是字符串,所以先比较第一个字符,"2">"1",返回true
x > '11' x.valueOf = function(){ return '2'; }
// 返回false,因为x是对象,对象的比较先调用对象的valueOf()将对象转为原始值类型,x的valueOf()方法返回的是基本类型,不再调用toString(),结果为'2'>'21',返回false
x > '21'
- 原始值类型
相等运算符和严格相等运算符
相等运算符(==)比较的是两个值是否相等,严格相等运算符(===)比较是否为'同一个值'; '==='先比较类型,如果类型不一样,则直接返回false, '=='会先将他们转换为同一个类型,再用严格相等运算符进行比较
两个复合类型(对象,数组,函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个地址
注意: 对于两个对象的比较,严格运算符比较的是地址,而大于或小于运算符比较的是值
严格不相等运算符
严格不相等运算符的算法是先求严格运算符的结果,然后再返回相反值
相等运算符
相等运算符比较同类型的数据时,与严格相等运算符完全一样;比较不同类型的数据时,相等运算符会先将数据类型转换,然后再用严格相等运算符比较
- 原始数据类型会先转换成数值再进行比较(字符串转换为数字时,会省略前置和后置空格)
// 等同于1 === Number(true)
1 == true // true // false 等同于 Number('true') === Number(true) ==> NaN === 1
'true' == true - 对象与原始类型值比较
- 对象与数值类型比较,对象转为数值
- 对象与字符串类型比较,对象转为字符串
- 对象与布尔值比较时,两边都是数值
// 对象与数值类型比较,对象转为数值
// true 等同于 Number([2]) == 2
[2] == 2 // 对象与字符串比较,对象转为字符串
// true 等同于 String([3,4]) == '3,4'
[3,4] == '3,4' // 对象与布尔值比较,两边都转为数值
// false 等同于 Number([5]) == Number(true)
[5] == true
- null和undefined与其他类型的值比较时,结果都为false,他们相互比较时为true: null == undefined // true
- 相等运算符隐藏的类型转换,会带来违反直觉的结果,因此不建议使用想的运算符(==),最好只使用严格相等运算符(===): 0 == '' 返回true
不相等运算符
它的算法就是先求相等运算符的结果,然后再返回相反值
javascript的比较运算符的更多相关文章
- (转)JavaScript中的运算符优先级
JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出J ...
- JavaScript基础——使用运算符
JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值运算符. 1.算数运算符 你可 ...
- JavaScript中“typeof”运算符与“instanceof”运算符的差异
在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了 ...
- JavaScript中的运算符种类及其规则介绍
JavaScript中的运算符有很多,主要分为算术运算符,等同全同运算符,比较运算符,字符串运算符,逻辑运算符,赋值运算符等.这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScri ...
- JavaScript 基本语法 -- 运算符的优先级
在所有的运算里,都是有运算顺序的.小时候学四则运算的时候,我们都知道这么一个规则:先乘除后加减,有括号要先算括号! 同样的,在JavaScript里面,运算符也是有相应的优先级的.其优先级如下表所示, ...
- JavaScript中逗号运算符
JavaScript中逗号运算符(,)是顺序执行两个表达式.使用方法: expression1, expression2 其中expression1是任何表达式. expression2是任何表达式. ...
- JavaScript学习系列7 -- JavaScript中的运算符
今天,我们来说一说JavaScript中的运算符,首先我们来讲一讲 一元运算符 JavaScript中的一元运算符有以下几种 1. delete delete 运算符主要用于删除对以前定义的对象属性或 ...
- 【废弃中】JavaScript 式与运算符
创建: 2017/09/25 更新: 2019/01/14 修改标题 [JavaScript 式与运算符] -> [JavaScript 式与主要Object的方法] 更新: 2019/02/ ...
- JavaScript按位运算符~
1. JavaScript按位运算符 Bit operators work on 32 bits numbers. 2. JavaScript按位运算符~ 值得注意的是,在JavaScript中,~5 ...
- JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)
1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...
随机推荐
- suse 12 安装git客户端
suse-linux:~ # zypper addrepo http://download.opensuse.org/repositories/devel:/tools:/scm/SLE_12_SP5 ...
- 利用shell脚本使用kubeadm部署kubenetes 1.18.6集群环境
# README # 此脚本需要在master节点上使用 # 注意root密码,请提前修改 # 个人实验环境,注意机器最低配置:master(2G内存,1cpu2核心,否则集群会创建失败),node( ...
- LibOpenCM3(一) Linux下命令行开发环境配置
目录 LibOpenCM3(一) Linux下命令行开发环境配置 本文使用 Linux 环境, 硬件为 STM32F103 系列开发板 LibOpenCM3 介绍 LibOpenCM3 是GPL协议( ...
- Spring高级特性之四:FactoryBean和BeanFactory
FactoryBean和BeanFactory两只是两个单词顺序不同但是内容大不相同.落脚点在后面一个单词,前面一个单词是其功能描述:FactoryBean--工厂bean,一个建工厂的bean?Be ...
- vue的事件监听
<div id="app"> <button type="button" @click="btnClick(a,$event)&qu ...
- 『德不孤』Pytest框架 — 4、Pytest跳过测试用例
目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...
- 深度学习分类问题中accuracy等评价指标的理解
在处理深度学习分类问题时,会用到一些评价指标,如accuracy(准确率)等.刚开始接触时会感觉有点多有点绕,不太好理解.本文写出我的理解,同时以语音唤醒(唤醒词识别)来举例,希望能加深理解这些指标. ...
- 在 CentOS 或 RHEL 系统上检查可用的安全更新的方法
当你更新系统时,根据你所在公司的安全策略,有时候可能只需要打上与安全相关的补丁.大多数情况下,这应该是出于程序兼容性方面的考量.那该怎样实践呢?有没有办法让 yum 只安装安全补丁呢? 答案是肯定的, ...
- maven-mvnd安装使用
目录 安装使用 官方介绍 使用注意 安装使用 下载 https://github.com/apache/maven-mvnd/releases/tag/0.7.1 ,mvnd-0.7.1-darwin ...
- 哈工大 计算机网络 实验三 IPv4 分组收发实验&IPv4 分组转发实验
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 IPv4 分组收发实验&IPv4 分组转发实验 实验目的: (注:实验报告模板中的各项内容仅供参考,可依照实际实验情况进 ...