一、主要区别:

1.通俗的来说,==是值的比较,而===不仅仅比较值,还比较引用的是否是同一个对象。

2.用==来比较的时候,如果两个数的操作数的类型不一样,会先转换。而===的操作数则不会进行任何转换。

3.if()里面用的是==判断,case里面用的是===判断。

例如if(null==undefined) 返回true

switch(null){

case "undefined":

//这里面不会执行

break;

}

二、===比较详解

1.如果2个值类型不同,则他们不相等。

2.如果两个值都是null,或者undefined,或者一个是null一个是undefined,则他们不相等。

3.如果有一个,或者两个都是NaN,则他们不相等。(NaN和任何对象任何值都不等,包括他本身。如果if(x!==x) 返回true,则说明X为NaN)。

4.如果两个值都是数字且数值相等的话,那么两者也相等。0 和-0也一样相等。

5.如果是字符串,内容、长度、编码不一样的话,那么他们不等。

6.如果两者引用值指向同一引用对象,则他们相等。如果指向不同的引用值,即使他们有完全一样的熟悉,同样也不相等。

三、==比较详解

1.如果两个值都是null,或者undefined,则他们相等。

2.如果一个是数字,另一个是字符串,先将字符串转换成数字,再比较。

3.如果其中有一个是boolean值,先把true转为1或者false转为0,再比较。

4.如果一个是对象,一个是数字或者字符串,则先将对象转换成原始值再进行比较。

==除了以上4以外,其他的不同类型之前的比较都不等。即使是两个对象类型一样,但不是引用同一个对象,也不一样。

四、具体案例

"A"===String("A")//true

"A"===new String("A")//false

[]==[]//false

{}=={}//false

2==[[[[2]]]]//true

var a=/124/,b=/124/;a==b//false

var a = Function.length,b= new Function().lenth;a==b;//false

var a = Date(0),b=new Date(0),c=new Date();//三者任意比较都是false

javascript中的==与===的更多相关文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  2. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  3. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  4. javascript中的操作符详解1

    好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...

  5. 掌握javascript中的最基础数据结构-----数组

    这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...

  6. javascript中变量提升的理解

    网上找了两个经典的例子 var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); // 10 var ...

  7. 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

    前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...

  8. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  9. Javascript中的valueOf与toString

    基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...

  10. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...

随机推荐

  1. Selenium自动化脚本开发总结

    Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  2. FDG内存分配器笔记

    FDG: 大规模并行系统中的动态内存分配器由于需要全局同步(记账) ,导致性能急剧下降. 代码解析 1.superblock 类中包含两个变量,两个函数.默认superblock大小为2048 ite ...

  3. iOS开发之UIDynamic

    1.概述 什么是UIDynamic? UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架. 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象.比如:重力.弹性碰撞等现象 ...

  4. nginx错误记录

    症状: 安装phpBB3.1的最后一步完成安装之后,注册用户,浏览器崩溃.localhost的所有页面都打不开同时没有响应. Trace: 虽然打开了nginx.exe,但是进程中未发现服务. 重新电 ...

  5. dotweb——go语言的一个微型web框架(三)路由注册

    上一章我们讲了如何启动一个dotweb程序,本篇文章将介绍如何注册路由. router是dotweb用来管理路由的结构体,它提供了一些关于路由操作函数. app := dotweb.New() rou ...

  6. Apache Beam 剖析

    1.概述 在大数据的浪潮之下,技术的更新迭代十分频繁.受技术开源的影响,大数据开发者提供了十分丰富的工具.但也因为如此,增加了开发者选择合适工具的难度.在大数据处理一些问题的时候,往往使用的技术是多样 ...

  7. JavaScript ES5面向对象实现一个todolist

    todo-list 前言 遵守 开始 布局 设计对象 对象的属性 事件绑定 业务逻辑单元的操作 实例化对象 参考 todo-list 前言 最近阅读了JavaScript设计模式的面向对象篇,但是又苦 ...

  8. z-index用法总结

    一.定义: z-index 只适用于元素有定位的情况,表示层级 数值越大 层级越高 展示的位置越靠前. 二.用法: 1.同级关系: z-index值较大的元素将叠加在z-index值较小的元素之上 ( ...

  9. 解决移动端click点击问题

    下载地址:https://github.com/ftlabs/fastclick 1,为什么移动端点击会有300ms的延迟呢? 从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 3 ...

  10. Real-time 节点

    Real-time 节点 Real-time 节点提供一个实时索引.通过这些节点索引的数据提供查询.real-time节点将定期将他们收集的数据转移到同一跨域时间的Historical节点. 使用zo ...