• javaScript中"=="和"==="运算符的区别


    相同点:

      两个运算符均可用于比较两个值是否相等,可允许操作任意类型的操作数,如果操作数相等则返回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 }

    注:此文为自己学习使用js过程中的学习笔记,文中描述若有不当之处,欢迎高手拍砖。

  • 相关阅读:
    redis安装及教程
    Spring Cloud Alibaba系列教程
    EasyCode代码生成工具使用介绍
    FastDFS服务器搭建
    轻量级的java HTTP Server——NanoHttpd
    java代码的初始化过程研究
    浅谈设计模式的学习(下)
    浅谈设计模式的学习(中)
    浅谈设计模式的学习(上)
    PGET,一个简单、易用的并行获取数据框架
  • 原文地址:https://www.cnblogs.com/alkq1989/p/5405320.html
Copyright © 2020-2023  润新知