文档章节

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

piggybear
 piggybear
发布于 2015/02/16 10:33
字数 851
阅读 6
收藏 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 


本文转载自:http://blog.csdn.net/aa294194253/article/details/42973259

共有 人打赏支持
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 16分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 17分钟前 ⋅ 0

Dubbo @Activate注解使用和实现解析

Activate注解标识一个扩展是否被激活和使用,可以放在定义的类上和方法上,dubbo用它在SPI扩张类定义上,标识这个扩展实现激活的条件和时机,先看下定义: /** * Activate * <p/> * ...

哲别0 ⋅ 24分钟前 ⋅ 0

6.5 zip压缩工具 tar打包 打包并压缩

1.tar tar命令格式 [-zjxcvfpP] filename tar -z:表示同时用gzip压缩。 -j:表示同时用bzip2压缩。 -J:表示同时用xz压缩。 -x:表示解包或者解压缩。 -t:表示查看tar包里的文件。 -c:表示建...

oschina130111 ⋅ 26分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

六库科技 ⋅ 32分钟前 ⋅ 0

Linux 机器的渗透测试命令备忘表

如下是一份 Linux 机器的渗透测试备忘录,是在后期开发期间或者执行命令注入等操作时的一些典型命令,设计为测试人员进行本地枚举检查之用。 此外,你还可以从这儿(https://gbhackers.com/c...

寰宇01 ⋅ 33分钟前 ⋅ 0

windows 安装java开发环境,配置jdk

下载jdk安装文件 链接:https://pan.baidu.com/s/1UEKPjnAdMqNj612B39Pfsg 密码:ipqx 如果javac无法使用 1,检查环境变量名称中是否有空格。。。,去除后即可 2,将JAVA_HOME替换为原始路径...

阿豪boy ⋅ 35分钟前 ⋅ 0

简析log4j的实现方式

刚加入新公司,对日志的要求比较严格,对此特意花了几天时间看了一下log4j的源码,大概了解了一下log4j的实现方式,总结如下: log4j的实现分为两个步骤:log4j.xml的加载,logger的使用 这里...

zdatbit ⋅ 今天 ⋅ 0

win环境下jdk7与jdk8共存配置

1.jdk安装包 jdk安装包 安装步骤略 2.jdk等配置文件修改 在安装JDK1.8时(本机先安装jdk1.7再安装的jdk1.8),会将java.exe、javaw.exe、javaws.exe三个文件copy到了C:\Windows\System32,这...

泉天下 ⋅ 今天 ⋅ 0

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部