>>分享Web前端开发技术,并对孙卫琴的《精通Vue.js:Web前端开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 14608 个阅读者 刷新本主题
 * 贴子主题:  javaScript中"=="和"==="运算符的区别 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2024-05-01 00:36:07     消息  查看  搜索  好友  邮件  复制  引用

相同点:

  两个运算符均可用于比较两个值是否相等,可允许操作任意类型的操作数,如果操作数相等则返回true,否则返回false。


不同点:

  "==="运算符也称为严格相等运算符,它用来检测两个操作数是否严格相等。该运算符首先计算其操作数的值,然后比较这两个值,比较过程中并不会首先对操作符进行任何类型转换。

  "=="运算符称为相等运算符,用来检测两个操作数是否相等,这里“相等”的定义非常宽松,可以允许进行类型转换。相等运算符"=="和"==="运算符类似,但相等运算符的比较并不严格。如果两个操作数不是同一类型,那么相等运算符会尝试对操作数进行一些类型转换,然后进行比较。例如:

  1.如果一个值是null,另一个是undefined,则他们相等。

  2.如果一个值是数字,另一个是字符串,比较时现将字符串转换为数字,然后使用转换后的值比较。

  3.如果其中一个值是true,则将其转换为1再进行比较。


使用情况:

  因为在使用过程中"=="会出现类型转换,所以为避免在使用"=="过程中出现意想不到的类型转换而影响比较结果,建议除特殊情况外全部用"==="。(见《JavaScript权威指南》 第六版 268页)。



效率情况:

  由于"=="在计算过程中会存在类型转换,如果进行很少的操作数判断的话,则"=="和"==="的效率相差无几,但是如果进行多次比对的话,则"==="效率整体上会高于"==",测试用例如下,改变for循环次数和运算符(a==b / a===b)即可测试。
1 var date1 = new Date();
2 var j = 0, k = 0;
3 for(var i =0; i<10000; i++){
4     var a = undefined;
5     var b = null;
6     a == b ? j++ : k++;
7 }
8 var date2 = new Date();
9 console.log("一共 " + (date2.getTime()-date1.getTime()) + " 毫秒");
10 if(j !== 0){
11     console.log("j==" + j);
12 }else if( k !== 0) {
13     console.log("k==" + k);
14 }

程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->按面向对象开发的基础范例
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->通过JPA API检索数据
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->计算属性和数据监听
  聊聊Nodejs中的模块化和事件循环
  勇闯28个关卡学会HTML与HTML5基础
  Vue选项的用法
  vue-min-picker普通选择器,日期选择器,省市区选择器,适用...
  Vue CLI内网安装(禁止运行vue指令解决方案)
  Thinking In Vue:vue指令的封装
  HTML DOM Script 对象
  CSS 单位
  CSS3字体
  CSS3 文本效果
  HTML 头部的元素的用法
  JavaScript的window.screen对象
  JSON 数据转换为JavaScript对象
  JavaScript 的字符串以及处理方法
  JavaScript 对象 的创建和使用
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。