文档章节

js 一个等号"=" 二个等号"==" 三个等号"===" 的区别

piggybear
 piggybear
发布于 2015/02/16 10:33
字数 851
阅读 10
收藏 0
点赞 0
评论 0

一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。

=== 判断规则

如果类型不同,就[不相等] 
如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断) 
如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。 
如果两个值都是true,或者都是false,那么[相等]。 
如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。 
如果两个值都是null,或者都是undefined,那么[相等]。 
== 判断规则:

如果两个值类型相同,进行 === 比较。 
如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: 
如果一个是null、一个是undefined,那么[相等]。 
如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 
如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 
如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核 心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我 也不大懂) 
任何其他组合,都[不相等]。

 

alert(0 == “”); // true
alert(0 == false); // true
alert(“” == false); // true

alert(0 === “”); // false
alert(0 === false); // false
alert(“” === false); // false

===用来进行严格的比较判断

alert(1 == “1″); // true

alert(1 === “1″); // false

=========================================================================================

首先,== equality 等同,=== identity 恒等。 

==, 两边值类型不同的时候,要先进行类型转换,再比较。 

===,不做类型转换,类型不同的一定不等。 

下面分别说明: 

先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等: 

1、如果类型不同,就[不相等] 

2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断) 

3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。 

4、如果两个值都是true,或者都是false,那么[相等]。 

5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。 

6、如果两个值都是null,或者都是undefined,那么[相等]。 

再说 ==,根据以下规则: 

1、如果两个值类型相同,进行 === 比较。 

2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: 

a、如果一个是null、一个是undefined,那么[相等]。 

b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 

c、如果任一值是 true 


© 著作权归作者所有

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
从一行等式理解JS当中的call, apply和bind

关于JS当中的call,apply和bind,相信大家和我一样,已经看过了无数篇相关的文章,都有自己的理解。所以这篇文章并非什么科普类的文章,仅仅是把我自己的理解记录下来。 我的学习习惯,是喜欢...

孟飞阳 ⋅ 04/20 ⋅ 0

Web Hacking 101 中文版 十、跨站脚本攻击(二)

4. 雅虎邮件存储型 XSS 难度:低 URL:Yahoo Mail 报告链接: 报告日期:2015.12.26 奖金:$10000 描述: 雅虎邮件编辑器允许人们将图片通过 HTML IMG 标签嵌入到邮件中。这个漏洞在 HTML I...

apachecn_飞龙 ⋅ 2017/03/27 ⋅ 0

两个等号(==)和三个等号(===)的区别

两个等号(==)和三个等号(===)的区别: 1. "=="表示:equality -> 等同 的意思,"=="使用两个等号时,如果两边值的类型不同的时候,是要先先进行类型转换后,才能做比较。 2. "==="表示:ide...

fuzhijing ⋅ 03/31 ⋅ 0

请教一个问题,根据表中字段更新本表字段

有个表tab,其中有五个字段,上限标识,下限标识,上限值,下限值,描述 要求是根据 前面的四个字段更新tab表描述字段,标识为Y时则有等号,为N时没有等号,上限和下限值从前面二个字段中获取...

雨山 ⋅ 2012/05/28 ⋅ 4

快速理解JavaScript中变量、常量与字面量

首先通过例子,来对三者有个大致了解,然后再分别对其进行解释! 变量 变量是用于存储数据的容器,在程序的运行中可以发生变化或者被再次赋值。 我们可以使用var关键字来声明变量,变量的值可...

张培跃 ⋅ 05/30 ⋅ 0

Javascript基础(五):属性、方法和for循环

一、属性和方法的区别 有很多同学在学习js时分不清属性和方法,那么到底怎么区分两者呢? 首先,从定义上来看: 属性:属性是一个变量,是给设置一个对象的特征,如宽高、颜色等; 方法:方法...

sinat_34647836 ⋅ 2017/05/19 ⋅ 0

JavaScript运算符

JavaScript运算符 计算: + , 两个数字相加(10 + 20) 注意:如果 加号两边都是数字,则进行数学运算 如果 加号两边存在字符串,则进行连接操作,如 "10" + 20 ==> 1020 - , 两个数字进行减法...

MaoKe ⋅ 2015/11/05 ⋅ 0

一个js面试题的分析

网上看到“叶小钗”的一篇面试文章,里面谈到了一个js的面试题,自己做着试了下,全错!于是根据结果,反推了下原因。 题目: var a = {n: 1};var b = a;a.x = a = {n: 2}console.log(a.x);...

佣兵0926 ⋅ 2015/12/07 ⋅ 0

JavaScript里面三个等号和两个等号的区别

== equality 等同,=== identity 恒等。 ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ==,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 ===,这个比较简单。下面的规...

qinyan036 ⋅ 2014/04/14 ⋅ 0

原生Js从0开始实现一个链家网地图画圈找房功能

概述 最近做项目的时候遇到的一个需求:要实现一个链家网地图找房中的画圈找房功能。链家网是采用百度地图实现房源展示,先来看看链家网的画圈找房功能,有木有很炫酷~~,可以到链家上体验一下...

超级索尼子 ⋅ 05/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

懒惰根本就不存在

简评:芝加哥大学心理学教授,懒惰根本就不存在。(本文表面讲行为心理学实则讲教育) 金句:以好奇而不是判断来回应一个人的无效行为,是非常有帮助的。 本文「我」代表原作者 E Price。 自...

极光推送 ⋅ 29分钟前 ⋅ 0

Excel提取单元格中最后一个“.”后面的数据

java.lang.String ----- String =TRIM((MID(SUBSTITUTE(B2,".",REPT(" ",99)),(LEN(B2)-LEN(SUBSTITUTE(B2,".","")))*99,99)))...

klog ⋅ 31分钟前 ⋅ 0

mac远程桌面

下载安装remote-desktop-mac Mac beta 客户端 mac通过远程桌面访问windows服务器。

亚林瓜子 ⋅ 35分钟前 ⋅ 0

firrtl

动手---sbt(2)之后,再回头看 chisel第一个实验,根据 https://github.com/freechipsproject/firrtl 发现firrtl没有执行sbt assembly命令,重新执行这个命令,结果成功。如下图: joe@joe-As...

whoisliang ⋅ 39分钟前 ⋅ 0

NIO

一、通道(Channel):用于源节点与目标节点的连接。在 Java NIO 中负责缓冲区中数据的传输。Channel 本身不存储数据,因此需要配合缓冲区进行传输。 二、通道的主要实现类 java.nio.channel...

stars永恒 ⋅ 40分钟前 ⋅ 0

Android悬浮窗的实现

0. 前言   现在很多应用都使用到悬浮窗,例如微信在视频的时候,点击Home键,视频小窗口仍然会在屏幕上显示。这个功能在很多情况下都非常有用。那么今天我们就来实现一下Android悬浮窗,以...

猴亮屏 ⋅ 40分钟前 ⋅ 0

日志采集中的关键技术分析

概述 日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查问题,如今,大量机器日夜处理日志数据以生成可读性的报告以此...

tqyin ⋅ 41分钟前 ⋅ 0

使用Navicat将数据导出为text文本 然后再导入

将数据导出为text文本效率很高 1. 准备工作 1.1 准备表结构 1.2 目标库 执行生成表结构sql 2.将表数据导出为text文本 生成的text文本 3. 目标库 导入text 4.效果...

Lucky_Me ⋅ 47分钟前 ⋅ 0

IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)

文章介绍了idea下,项目乱码、控制台乱码及运行tomcat控制台乱码的解决方案,文章链接:https://www.cnblogs.com/vhua/p/idea_1.html

Funcy1122 ⋅ 50分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 55分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部