javascript的三个等号(===)的作用

javascript的三个等号(===)的作用:
在代码中,经常需要去比较两个操作数是否相等,javascript提供了两种比较运算符,一个是使用最为频繁的普通等号运算符(==),另一个是使用虽然不如第一个频繁,但是比较规则要严格的全等运算符(===)。
一.普通等号运算符:
此运算符的比较规则比较松散,因为在进行比较之前,两个操作数要进行数据类型转换。
规则如下:
1.如果操作数中有布尔值,则先将此布尔值转换为数值类型。true转换为1,false转换为0。
2.如果操作数中,一是数字,一个是字符串,那么在比较之前,会尝试将字符串转换成数字。
3.如果操作数中,一个是字符串,一个是对象,那么在比较之前,会尝试将对象转换成字符串。
4.如果操作数中,一个是数字,一个是对象,那么在比较之前,会尝试将对象转换成数字。
代码实例:

true==1;//true
10==10;//true
"10"==10;//true
var a={x:10}
var b={x:10}
a.x==b.x;//true

从以上代码可以看出,由于执行了数据类型转换,那么比较规则也相对宽松,字符串也可以与数值类型相等。
二.全等运算符:
此中运算符比较规则比较严格,主要是因为在比较之前,两个操作数不会进行数据类型转换。
代码实例:

true===1;//false
10===10;//true
"10"===10;//false
var a={x:10}
var b={x:10}
a.x===b.x;//true

以上代码和第一个代码实例唯一的不同就是将普通的运算符替换为全等运算符,但是结果却有很大的不同。

分析如下:

1.true===1;//false,由于不进行类型转换,自然不会相等。

2.10===10;//true,10与10相等,这个不用多说。

3."10"===10;//false,由于不进行类型转化,字符串"10"自然与数值10不相等。

4.a.x===b.x;//true,由于a.x的值是10,b.x值也是10,它们自然相等。

以上理解起来没有任何问题,再来看一段代码实例:

var a={x:10}
var b={x:10}
c=a;
c===a//true;
a===b//flase

在以上代码中,由于c和a都是指向同一个对象的,所以是全等的,a和b们两个并不是指向同一个对象的所以它们两个是全等的。

特别说明:两个对象比较的是指向两个对象的引用,如果都指向同一个对象。

两种运算符的一些特殊情况:

1.null与undifined:

null==undifined //true
null===undifined //false

2.如果其中的一个运算数是NaN,则不相等:

NaN===NaN//false
NaN==NaN//false

原文地址是:http://www.51texiao.cn/javascriptjiaocheng/2015/0430/486.html

最原始地址是:http://www.softwhy.com/

时间: 2024-07-31 00:22:31

javascript的三个等号(===)的作用的相关文章

JavaScript里面三个等号和两个等号有什么区别?

1.对于string,number等基础类型,==和===是有区别的 a)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 b)同类型比较,直接进行“值”比较,两者结果一样 如alert('1'==1);//结果是truealert('1'===1);//结果是false 2.对于Array,Object等高级类型,==和===是没有区别的 进行“指针地址”比较 3.基础类型与高级类型,==和===是有区别的 a)对于==,将高级转化为基础类

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

== equality 等同,=== identity 恒等. ==, 两边值类型不同的时候,要先进行类型转换,再比较. ===,不做类型转换,类型不同的一定不等. 下面分别说明: 先说 ===,这个比较简单.下面的规则用来判断两个值是否===相等: 1.如果类型不同,就[不相等] 2.如果两个都是数值,并且是同一个值,那么[相等]:(!例外)的是,如果其中至少一个是NaN,那么[不相等].(判断一个值是否是NaN,只能用isNaN()来判断) 3.如果两个都是字符串,每个位置的字符都一样,那么

JavaScript中三个等号和两个等号的区别(== 和 ===)浅析(转)

== equality 等同,=== identity 恒等. ==, 两边值类型不同的时候,要先进行类型转换,再比较. ===,不做类型转换,类型不同的一定不等. 下面分别说明: 先说 ===,这个比较简单.下面的规则用来判断两个值是否===相等: 1.如果类型不同,就[不相等] 2.如果两个都是数值,并且是同一个值,那么[相等]:(!例外)的是,如果其中至少一个是NaN,那么[不相等].(判断一个值是否是NaN,只能用isNaN()来判断) 3.如果两个都是字符串,每个位置的字符都一样,那么

JavaScript中的两个等号(==)和三个等号(===)

"Determining whether two variables are equivalent is one of the most important operations in programming." (确定两个变量是否相等是编程中最重要的操作之一)--Nicholas Zakas JavaScript中作比较有两个方式:严格模式(strict comparison 使用三个等号 ===)和概要模式(abstract comparison 使用两个等号 ==),对于他们的意

浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别

先做个简单的介绍,让先有个直观的认识 == equality 等同 === identity 恒等 == 两边值类型不同的时候,要先进行类型转换,再比较. === 不做类型转换,类型不同的一定不等. 举例说明: "1" == true 类型不同,"=="将先做类型转换,把true转换为1,即为 "1" == 1: 此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1: 此时,"==" 左

Ext JS学习第四天 我们所熟悉的javascript(三)

此文用来记录学习笔记: •javascript之函数 •this关键字的使用 –this关键字总是指向调用者,谁调用函数,this就指向谁 •call.apply的使用 –call和apply主要应用与框架底层,用于绑定函数的执行环境/作用域 •块的概念 –和高级程序语言不同,js里没有块的概念,我们一般用小括号包裹块级作用域 •闭包:掌握闭包必须要深入清楚的概念 –执行环境 –作用域链 –垃圾回收机制 附上栗子 代码 1 // This 关键字 在javascript里的使用 2 //this

JavaScript的三种工业化玩法

JavaScript的三种工业化玩法 软件工程中任何的语言如果想要写出健壮的代码都需要锋利的工具,当然JavaScript也不例外,很多朋友刚入门的时候往往因为工具选的不对而事半功倍,JavaScript同样需要软件调试技术,希望本文总结的三种工具会对大家的学习有所帮助. 任何语言的学习都离不开实践,不写代码是永远学不会编程的,当然javascript也不例外,很多人推荐直接浏览器调试,个人觉得这个推荐应该是非常初级的,比如Chrome, Firefox确实提供了实用的前端调试工具,但是个人认为

JavaScript中有三个可以对字符串编码的函数,分别是: escape(),encodeURI(),encodeURIComponent()

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的

javascript中的preventDefault与stopPropagation作用介绍

preventDefault方法的起什么作用呢? 我们知道比如<a href="http://www.baidu.com">百度</a>,这是html中最基础的东西,起的作用就是点击百度链接到http://www.baidu.com,这是属于<a>标签的默认行为. 看一段代码大家就明白了: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">