阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 关系运算符

      JS 关系运算符

      同布尔值来表示两个数据之间的关系

      大小关系检测

      • >
        • 如果A大于B,则返回true,否则返回值为false
      • <
        • 如果A小于B,则返回true,否则返回值为false;
      • <=
        • 如果A小于等于B,则返回值为true,否则返回false
      • >=
        • 如果A大于等于B,返回true,否则返回值为false
      //关系操作符
      var testNum=3;
      console.log("下面是关系操作符");
      console.log(testNum>1);
      console.log(testNum>=1);
      console.log(testNum<1);
      console.log(testNum<=1);
      

      操作规则

      • 数值与数值的比较,比较他们的代数值;
      • 仅一个运算数是数值,将另一个运算数转换成数值,并比较他们的代数值;
      • 字符串间的比较,逐字符比较他们的Unicode数值;//""
      • 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较;
        • 只要有一个是数值,另外一个无论什么值,都会最终转为数值后再比较)
      • 运算数既非数字也非字符串,返回值为false
      • 与NaN比较,返回值是false;
      console.log("20">"100000");//true
      console.log(null>2);//false
      console.log(NaN>2);//false
      

      注意:做关系比较的时候,一定要把值全部转为数字类型,这是一个很好的习惯;一定要避免2个字符串在一起比较大小;

      等值关系检测;( == 和 === )

      相等比较

      • 操作符
        • == 比较两个运算数的返回值看是否相等;(和正常生活中的=一定要区分开;)
        • = 比较两个运算数的返回值看是否不想等;
      • 类型转换
        • 布尔值
          • True 1;
          • False 0;
        • 对象,调用valueOf() 基本类型
        • 字符串与数值的比较,字符串转换为数值;
      • 比较原则
        • Null与undefined;相等,比较前不做任何转换;
        • NaN,与任何数值都不想等,包括其自身;
        • 对象,是否属于同一个对象
          • 是 ==
          • 否 !=

      var testNum=3;
      console.log("下面是关系操作符");
      console.log(testNum==1);
      console.log(testNum===1);
      console.log(testNum!=1);
      

      【我手动画的转换图】

      //转换分析1
      console.log("zhuanbang"?true:false);//true,因为非空的字符串是一个真值;
      
      //转换分析2
      console.log("zhuanbang"==true);//这个时候输出什么呢?在分析一里非空字符串是一个true,那么非空字符串==true吗?
      
      //转换分析3
      console.log("zhuanbang"==false);//如果上面的的返回不是true,那么这个会返回true吗?
      
      //下面的分析的步骤;
      /*转换分析2-解析
      * 1、右边的布尔值会转为数字,true->1;"zhuanbang"==1
      * 2、左边的字符串会转为数字,"zhuanbang"因为里面有字母,所以转换为NaN;NaN==1
      * 3、NaN和任何数据都不想等,包括自己,所以结果是false,并不是true;
      * */
      
      /*
      * 1、右边的布尔值会转为数字,false->0;"zhuanbang"==0
      * 2、左边的字符串会转为数字,"zhuanbang"因为里面有字母,所以转换为NaN;NaN==0
      * 3、NaN和任何数据都不想等,包括自己,所以结果是false,结果也不是true
      * */
      

      相同比较(也叫绝对相等/全等)

      • 运算符
        • === 比较两个运算数的返回值以及数据类型是否相同;
        • !== 比较两个运算数的返回值以及数据类型是否不相同
      • 比较原则
        • 值类型间比较,只有数据类型相同,且数值相等时才能够相同;
        • 值类型与引用类型比较,肯定不相同,
        • 引用类型间的比较,比较他们的引用值(内存地址)

      简单的说,就是x和y比较,如果两者的类型不同,那就没有比较的意义了,直接返回false;

      //相同的小分析
      console.log("zhuanbang"===true);
      console.log("1"===1);
      console.log("zhuanbang"==="zhuanbang");
      var person1={name:"zhuanbang"};
      var person2={name:"zhuanbang"};
      console.log(person1===person2);//false, 是不同的引用地址;在堆内存中储存是不一样的; 
      
      目录
      目录