javascript中的==与===
一、主要区别:
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中的==与===的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- javascript中的操作符详解1
好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...
- 掌握javascript中的最基础数据结构-----数组
这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...
- javascript中变量提升的理解
网上找了两个经典的例子 var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); // 10 var ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
- Javascript中的valueOf与toString
基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...
- 关于javascript中的this关键字
this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...
随机推荐
- HTML5学习笔记<一>: 认识H5
什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...
- web从入门开始(3)-----第一个网页
<meta>:是进行网页格式初始化的命令,确定网页使用的文本格式和编码格式 Background:中的路径,必须为相对路径 l HTML文本标记 <b>HTM文本</b ...
- Linux下httpd服务与Apache服务的查看和启动
转:http://jingyan.baidu.com/article/63f236282d43170209ab3d43.html 这里简要介绍Linux环境中Apache也就是httpd服务的启动,查 ...
- 移植python笔记
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 编译环境:ubuntu-14.04.1 编译器:gcc.arm-hisiv200-linux-gnueabi P ...
- cuda线程/线程块索引小结
内建变量: threadIdx(.x/.y/.z代表几维索引):线程所在block中各个维度上的线程号 blockIdx(.x/.y/.z代表几维索引):块所在grid中各个维度上的块号 blockD ...
- 意外发现的大批量导入数据SqlBulkCopy类
因为要做一个号码归属地查询小功能,因为要导入外部(文本文件)的电话归属地数据,使用的是SqlDataAdapter类,数据不多,只四万有多条,表也只有一个,phoneBook表,使用的是DataTab ...
- (转)crontab安装(command not found)
1. 确认crontab是否安装:执行 crontab -l 命令如果报 command not found,就表明没有安装 2. 安装 crontab执行 yum install -y vixie- ...
- Object-C定时器,封装GCD定时器的必要性!!! (二)
上一篇:Object-C定时器,封装GCD定时器的必要性!!! (一) 上一篇认识了Object-C中的几种定时器,这一篇将Dispatch定时器(GCD定时器)封装起来. p.p1 { margin ...
- Python之路-Linux命令基础(5)
作业一:nginx服务 二进制安装nginx包 1.使用网络yum源 2.使用yum安装epel-release扩展源 [root@localhost html]# yum install epel- ...
- JS中的bind的实现以及使用
在讨论bind()方法之前我们先来看一道题目: var altwrite = document.write; altwrite("hello"); //1.以上代码有什么问题 // ...