`

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的==运算详解

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

    JavaScript-Equality-Table:(== vs ===)

    在JavaScript中,比较操作符是编程中的基本元素,它们用于检查两个值是否相等或不等。本主题将深入探讨JavaScript中的"=="和"==="这两个等号操作符的区别,以及它们在不同情况下的行为。 首先,让我们理解"=="(双...

    javascript笔记 javascript笔记

    根据提供的文件信息,我们可以归纳出以下几个JavaScript相关的知识点: ### JavaScript基础用法 #### 内联JavaScript 内联JavaScript指的是在HTML元素中直接嵌入JavaScript代码的方式。这种方式常见于`<a>`、`...

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

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

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

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

    常用javascript语句大全

    ### 常用JavaScript语句详解 #### 1. `document.write("")` 输出语句 在JavaScript中,`document.write()` 方法用于将指定的内容写入正在加载的文档中。这通常用于动态创建网页内容。 #### 2. JS中的注释为`//` 在...

    事半功倍之Javascript

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

    javascript

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

    常用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版...

Global site tag (gtag.js) - Google Analytics