javascript中两个等号和三个等号的区别
首先,== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。
再说 ==,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
e、任何其他组合,都[不相等]。
举例:
"1" == true
类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。
= 赋值运算符
== 等于
=== 严格等于
例:
var a = 3;
var b = "3";
a==b 返回 true
a===b 返回 false
因为a,b的类型不一样
===用来进行严格的比较判断
javascript中两个等号和三个等号的区别相关推荐
- JS/JavaScript中两个等号 == 和 三个等号 === 的区别
JavaScript中两个等号 == 和 三个等号 === 的区别 一.概念 == 和 === (1) "=="叫做相等运算符,"==="叫做严格运算符. ...
- js两个等号和三个等号_js中两个等号(==)和三个等号(===)的区别
js中两个等号(==)和三个等号(===)的区别: 1. "=="表示:equality -> 等同 的意思,"=="使用两个等号时,如果两边值的类型不同 ...
- js中两个等号“==“与三个等号“===“有何不同
一.1个等号"=": 首先一个等号"=",大家都知道,一般在编程语言中是用来做赋值操作的,也叫赋值运算符,即把等号右边的值,赋值给左边声明的变量. 例如:在js ...
- Javascript中!!(两个感叹号,双感叹号)的含义
使用Javascript时,有时会在变量前面加上两个感叹号,这样做表示什么含义呢?Javascript中,!表示运算符"非",如果变量不是布尔类型,会将变量自动转化为布尔类型,再取 ...
- 两个等号(==)和三个等号(===)的区别
2019独角兽企业重金招聘Python工程师标准>>> 两个等号(==)和三个等号(===)的区别: 1. "=="表示:equality -> 等同 的意 ...
- JavaScript 保留两位小数的三种实现方法
以下将为大家介绍 JavaScript 保留两位小数的三种实现方法. 目录 1.利用toFixed () 方法 2.利用Math.floor () 方法 3.利用正则表达式方法 1.利用toFixed ...
- JavaScript中String的slice(),substr(),substring()三者区别
JavaScript中String的slice(),substr(),substring()三者区别 共同之处 从给定的字符串中截取片段,并返回全新的这片段的字符串对象,且不会改动原字符串. 具体不同 ...
- 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别
今天,被问到两个JS问题,当时没回答到重点,问题虽然看起来简单,但是细节却马虎不得,在此做下记录: 1. 在Javascript中 声明时用"var"与不用"var&qu ...
- 两电平apf和三电平apf的区别
三电平 三电平逆变器:拓扑为在两个电力电子开关器件串联的基础上,中性点加一对箝位二极管的三电平逆变器,又称为中性点箝位型(Neutral Point Clamped,简称NPC)三电平逆变器,所示即为 ...
- inflate方法两个参数和三个参数的区别
前言 今天在lint项目的代码时,又遇到了inflate方法的参数问题,之前看过相关的文章,又没有记录下来,导致时间长了就忘记了.今天再次遇到这个问题,便老老实实记录一下LayouInflater中i ...
最新文章
- c# BackgroundWorker组件介绍(属性、方法、事件)
- 正则表达式(Regular Expression)
- ba+ii+plus模拟+android,财务计算器(BAII PLUS)
- Servlet3.1 新增的非阻塞式IO
- 【NLP】关于Transformer的常见问题及解答
- java udp 工具类_java基于UDP实现图片群发功能
- git灰度发布版本_Git发布2.30版本
- vb mysql添加字段_怎么用VB向SQL数据库中添加记录
- mysql not in性能分析_SQL 中的 in 与 not in、exists 与 not exists 的区别以及性能分析...
- 2021年PMP考试模拟题7(含答案解析)
- 通用数据库弱密码检测解决方案
- Spring cloud搭建HSF框架,整合mybatis、redis、rabbit
- 求职软件测试工程师英文简历,软件测试员英文简历模板.doc
- 怎么查看电脑最大支持扩展内存
- Python的特点(优点和缺点)
- 怎样打开VOIP与SIP
- 高德地图各种摄像头图标_高德地图Overlay的应用以及照相功能的实现
- 怎么检查计算机硬盘有没有供电,怎么检测电脑硬盘有没有损坏
- mysql如何查看数据库相关信息
- 国产操作系统UOS安装教程
热门文章
- svn 怎么直接同步指定服务器的某个文件夹
- 【week3】psp (技术随笔)
- Java Web学习路线
- 设计模式学习 - 工厂模式
- 转)SSO单点登录在互联网电商应用中的解决方案(基于CAS的改造)
- Flash与组件:国外收费组件网站
- android7.1 动态申请权限改为默认授权,修改PackageManagerService.java下的grantPermissions为true
- iosttableViewCell右侧的箭头,圆形等
- 论文笔记之:Multiple Feature Fusion via Weighted Entropy for Visual Tracking
- Mikrotik RouterOS 日常问题解析 ROS 5.4下载