`

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

    常用javascript案例大全

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

    JavaScript学习基础学习心得

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

    javascript循环

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

    JavaScript 参考手册集合 chm版打包

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

    javascript方法和技巧大全

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

    JavaScript字符串函数大全

    在JavaScript中,字符串是用于处理文本数据的基本类型之一。字符串方法提供了丰富的功能来操作这些文本数据,使得开发人员能够更高效地完成各种任务。下面将详细介绍标题与描述中提及的一些关键字符串函数及其用法。...

    javascript试题(附答案)

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在客户端脚本方面扮演着核心角色。这份"javascript试题(附答案)"是为初学者设计的,旨在帮助他们更好地理解和掌握JavaScript的基础知识。 一、变量与数据...

    JavaScript 实现基础 ArrayList 功能

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

    javascript文字编辑器

    <script type="text/javascript" src="KindEditor.js"> <script type="text/javascript"> var editor = new KindEditor("editor"); editor.hiddenName = "new"; editor.width = "700px"; editor.height = ...

    JavaScript简介及基础语法介绍

    JavaScript简介及基础语法介绍 JavaScript是客户端脚本语言,是一种基于对象(Object)和事件驱动(Event Driven)的脚本语言。它认为文档和显示文档的浏览器都是由不同的对象组成的集合,这些对象具有一定的属性,...

    javascript上传下载代码

    根据提供的文件信息,本文将详细解释“javascript上传下载代码”这一主题所涉及的关键知识点,包括JavaScript如何实现文件的上传与下载功能,以及如何在Java环境中使用这些功能。 ### JavaScript文件上传原理 ####...

    JavaScript经典之作

    ### JavaScript经典之作——从入门到高级大全 #### 一、简介 《JavaScript经典之作》是一部由作者cxl编写的详尽教程,旨在帮助读者全面掌握JavaScript编程语言的基础知识与高级技巧。本书覆盖了从初学者到进阶学习...

Global site tag (gtag.js) - Google Analytics