`

javascript之 == vs ===

阅读更多
一、Comparison Overview

1. Speed Compare(运行速度比较):


=== will never be slower than ==.
They both do type checking, so === doesn't do anything extra compared to ==,
but the type check may allow === to exit sooner when types are not the same.



2. How do they work(它们是如何工作的?):

=== :
compare both type and value

==  :
only compare value.
if there are different types, then convert the value.


Example:

if(true == 1);  //true, because 'true' is converted to 1 and then compared
if(true === 1); // false

if("4" == 4);  //true, because "4" is converted to 4 and then compared
if("4" === 4); // false

if(true == 2); //false, because 'true' is converted to 1



Exception:
var a = new String("abc");
var b = "abc";

if(a==b);   // true
if(a===b);  // false, because typeof a is object, type of b is String




二、How they work?

1、How "===" compare values?

"Type Checking" is the first step !
引用


11.9.6 The Strict Equality Comparison Algorithm
The comparison x === y, where x and y are values, produces true or false. Such a comparison is performed as follows:
  1. If Type(x) is different from Type(y), return false.
  2. If Type(x) is Undefined, return true.
  3. If Type(x) is Null, return true.
  4. If Type(x) is not Number, go to step 11.
  5. If x is NaN, return false.
  6. If y is NaN, return false.
  7. If x is the same number value as y, return true.
  8. If x is +0 and y is −0, return true.
  9. If x is −0 and y is +0, return true.
  10. Return false.
  11. If Type(x) is String, then return true if x and y are exactly the same sequence of characters (same length and same characters in corresponding positions); otherwise, return false.
  12. If Type(x) is Boolean, return true if x and y are both true or both false; otherwise, return false.
  13. Return true if x and y refer to the same object or if they refer to objects joined to each other (see 13.1.2). Otherwise, return false.


http://stackoverflow.com/a/1813267/2893073






2. When use "==", how is the converstion?(不同类型的值如何转换?)














三. Summary(总结)

Always use 3 equals unless you have a good reason to use 2.








Reference:

http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons

http://dorey.github.io/JavaScript-Equality-Table/











-
  • 大小: 46.2 KB
  • 大小: 43.9 KB
  • 大小: 53.4 KB
分享到:
评论

相关推荐

    第8章javascript介绍=创新教育基础与实践=大连理工大学.pptx

    第8章javascript介绍=创新教育基础与实践=大连理工大学.pptx

    javascript中的用法与意思

    在Web开发中,`<script>`标签是HTML文档中用于嵌入或引用JavaScript代码的关键元素之一。它允许开发者直接在HTML文档内部编写脚本代码或者通过`src`属性链接到外部JavaScript文件。在早期的HTML版本中,`<script>`...

    JavaScript的==运算详解

    ==运算符是JavaScript中的比较运算符之一,它用于比较两个值是否相等。在JavaScript中,==运算符被称为抽象等式比较算法(The Abstract Equality Comparison Algorithm),它涉及多种类型转换和比较规则。根据...

    JavaScript小技巧全集 JavaScript教程 JavaScript源代码集

    JavaScript,作为全球最广泛使用的脚本语言之一,是构建网页动态功能和交互效果的基础。这个“JavaScript小技巧全集”提供了丰富的教程和源代码,旨在帮助开发者深入理解和掌握JavaScript的各种实用技巧。 首先,...

    JavaScript里 ==与===区别详解

    JavaScript是一种弱类型语言,它的变量在声明时不需要指定数据类型,而类型检查是在运行时进行的。在JavaScript中,比较运算符用来比较两个值,并返回一个表示比较结果的布尔值。比较运算符分为两种:“==”和“===...

    事半功倍之Javascript

    根据给定文件的信息,我们可以总结出以下关于JavaScript的相关知识点: ### 一、基本概念与语法 **1. 输出文本** JavaScript 提供了多种输出文本的方法,例如 `document.write`。在给定的内容中,可以看到一个...

    javascript

    ### JavaScript 弹出窗口知识点详解 #### 一、基本概念 **JavaScript** 是一种轻量级的编程语言,常用于网页交互式的实现。通过 **JavaScript** 可以控制浏览器的行为,比如创建弹出窗口。 #### 二、创建弹出窗口...

    Javascript 面向对象的JavaScript进阶

    ### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...

    常用javascript案例大全

    JavaScript 技巧大全 JavaScript 是一种广泛应用于 Web 开发中的脚本语言,下面是常用的 JavaScript 案例大全,包括原生 JavaScript 实现字符串长度截取、获取域名主机、清除空格、替换全部、转义 HTML 标签、还原 ...

    JavaScript函数大全Word版

    ### JavaScript函数大全Word版知识点详解 #### 一、概述 《JavaScript函数大全Word版》是一份详尽的JavaScript基础知识及函数应用指南。该文档通过列举常见的JavaScript语法特性、内置对象和函数,帮助开发者快速...

    JavaScript学习基础学习心得

    浏览器是JavaScript运行的重要环境之一,了解其内部结构对于理解JavaScript的执行机制至关重要。 1. **Shell**:浏览器的用户界面部分。 2. **内核**: - **渲染引擎**:负责解析HTML和CSS,并将其渲染成可视化的...

    简略说明Javascript中的= =(等于)与= = =(全等于)区别

    在JavaScript中,`=`、`==` 和 `===` 是三种不同的比较运算符,它们用于判断两个值是否相等。理解这些运算符的区别对于编写精确的JavaScript代码至关重要。 首先,`=` 是赋值运算符,它将右侧的值赋给左侧的变量,...

    使用javaScript增强交互效果

    JavaScript是一种强大的客户端脚本语言,广泛应用于Web开发中,用于创建动态、交互性强的网页。在本文中,我们将深入探讨如何使用JavaScript来增强网站的用户体验,以实现更丰富的交互效果。 一、事件处理 ...

    javascript循环

    ### JavaScript循环应用实例详解 #### 1. 输入n个数字,输入0结束,输出这n个数字的平均值,最大值和最小值 为了实现这一功能,我们需要使用一个循环来不断接收用户输入,并且需要使用变量来跟踪这些输入的总数、...

    JS 特殊数据类型的 == 和 === 比较

    相比之下,`===` 是严格相等运算符。它不仅检查值的相等性,还检查类型的一致性。只有当两个操作数的值和类型都完全相同,`===` 才会返回 `true`。例如: ```javascript 0 === "" // false,因为它们类型不同 null ...

    JavaScript 参考手册集合 chm版打包

    JavaScript,是一种广泛应用于Web开发的轻量级脚本语言,主要负责客户端的动态交互。它在网页中的应用无处不在,从简单的表单验证到复杂的前端应用,都是JavaScript的用武之地。这份“JavaScript参考手册集合chm版...

    javascript方法和技巧大全

    ### JavaScript方法和技巧详解 #### 一、基本概念与语法结构 **JavaScript**是一种轻量级的编程语言,被广泛应用于网页开发中,用于增强网页的交互性与动态效果。以下是一些基本的语法和使用技巧。 ##### 1. 嵌入...

    javascript 实现页面打印

    JavaScript 实现页面打印 本文将介绍使用 JavaScript 实现页面打印的方法,并提供相关的代码示例。 一、使用 ExecWB() 函数实现打印 ExecWB() 函数是 IE 浏览器提供的一个函数,可以用来调用 IE 菜单下的打印命令...

    JavaScript 实现基础 ArrayList 功能

    在JavaScript中,ArrayList是一种常见的数据结构,它模拟了Java中的ArrayList功能,允许程序员进行动态数组操作。虽然JavaScript原生不支持ArrayList,但我们可以利用数组(Array)对象来实现类似的功能。下面将详细...

    javascript操作xml文件示例

    在JavaScript中,XML(eXtensible Markup Language)文件的操作主要通过DOM(Document Object Model)接口来实现。DOM是一种标准,允许程序和脚本动态更新、添加、删除和改变元素和属性,使得XML文档可以被解析和...

Global site tag (gtag.js) - Google Analytics