JavaScript中==和===的区别
JavaScript中==和===的区别
JavaScript中==和===的区别一、“===”首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换
1、如果两个值类型不相同,则它们不相等。
2、如果两个值都是null或者都是undefined,则它们不相等。
3、如果两个值都是布尔值true或false,则它们相等。
4、如果其中一个值是NaN,或者两个两个值都是NaN,则它们不相等。NaN和其他任何值都是不相等的,包括它本身!!!通过x!==x来判断x是否为NaN,只有在x为NaN的时候,这个表达式的值才为true。
5、如果两个值为数字,且数值相等,则它们相等。如果一个为0,另一个为-0,则它们同样相等。
6、如果两个值为字符串,且所含的对应位上的16位数完全相等,则它们相等。如果它们的长度或内容不同,则它们不等。两个字符串可能含义完全一样且所显示出手字符也一样,但具有不同编码的16位值。JavaScript并不对Unicode进行标准化的转换,因此像这样的字符串通过"==="和"=="运算符的比较结果也不相等。
7、如果两个引用值同一个对象、数组或函数,则它们是相等的。如果指向不同的对象,则它们是不等的。尽管两个对象具有完全一样的属性。
例如
var param1= ‘1’, param2 = ‘1’ ;
param1 === param2; //类型和数值同时相等 true
var param3 = 1;
param1 === param3; //类型不相等和数值相等false
var param4 = 2;
param1 === param4; //类型和数值都不相等 false
var param1 = null, param2 = undefined;
param1 === param2; //false
二、 相等运算符“==”如果两个操作数不是同一类型,那么相等运算符会尝试一些类型转换,然后进行比较
1、如果一个值是null,另一个是undefined,则它们相等。
2、如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值比较。
3、如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将基转换为0再进行比较。
4、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,然后再进行比较。对象通过toString()方法或valueOf()方法转换为原始值。JavaScript核心的内置类首先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只使用toString()转换。那些不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值。
5、其他不同类型之间的比较均不相等.
例如
var param1= ‘1’, param2 = ‘1’ ;
param1 == param2; //类型和数值同时相等true
var param3 = 1;
param1 == param3; //类型不相等和数值相等true
var param4 = 2;
param1 == param4; //类型和数值都不相等false
var param1 = null, param2 = undefined;
param1 === param2; //true
- javascript的作用域详解精简版(浅谈JavaScript 中的延迟加载属性模式)
- 浏览器怎么显示javascript页面(JavaScript如何通过userAgent判断几个常用浏览器详解)
- JavaScript中call、apply、bind实现原理详解(JavaScript中call、apply、bind实现原理详解)
- javascript 虚拟滚动条(JavaScript实现可拖拽的进度条)
- 生成随机数javascript(JavaScript实现随机生成验证码及校验)
- javascript和jquery的区别详解(JavaScript与JQuery框架基础入门教程)
- javascript编写的小游戏(CSS3 实现NES游戏机的示例代码)
- Javascript操作DOM
- canvas实现字体粒子爆炸特效(javascript canvas实现雨滴效果)
- vue走马灯特效(Javascript结合Vue实现对任意迷宫图片的自动寻路)
- js打印斐波那契数列(JavaScript输出斐波那契数列的实现方法)
- js数组去重的十种方法(JavaScript常用数组去重实战源码)
- javascript写游戏脚本(原生JS实现飞机大战小游戏)
- js宏任务都有哪些(JavaScript 操作宏任务与微任务)
- js数字时钟编程(JavaScript实现动态数字时钟)
- JavaScript的执行上下文
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
- 今日菜价 红三鱼涨幅最高 4.41 ,黄鳝降幅最高 5.06(红三鱼涨幅最高)
- 今日菜价 西生菜涨幅最高 6.19 ,生菜降幅最高 5.38(西生菜涨幅最高)
- 今日菜价 青豆角涨幅最高 0.70 ,菜心降幅最高 5.55(青豆角涨幅最高)
热门推荐
- python读写文件实验心得(Python文件读写常见用法总结)
- Extjs menu菜单的简单用法
- docker 网络映射启动失败(解决docker安装完成报:bridge-nf-call-iptables is disabled问题)
- python菜单栏教程(Python3.5实现的三级菜单功能示例)
- docker容器网络设置(对docker中的overlay式网络详解)
- js弹出框代码(js实现自动锁屏功能)
- dede织梦cms安装教程(开源织梦dedecms快速搬家图文教程)
- python找出数组的最大值(Python查找数组中数值和下标相等的元素示例二分查找)
- vueelementui左侧菜单(Vue Element前端应用开发之动态菜单和路由的关联处理)
- python做了一个自动翻译的小工具(Python 20行简单实现有道在线翻译的详解)