JavaScript的关系(比较)运算符

用于进行比较的运算符称作为关系运算符:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)

一、和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
  1.两个操作数都是数值,则数值比较;
  2.两个操作数都是字符串,则比较两个字符串对应的字符编码值;
  3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
  4.两个操作数有一个是对象,则先调用 valueOf()方法或 toString()方法,再用结果比较;

  var box = 3 > 2; //true
  var box = 3 > 22; //false
  var box = ‘3‘ > 22; //false
  var box = ‘3‘ > ‘22‘; //true  比较的是数值字符串的第一个字符,这里第一个字符串的第一个数是3比第二个字符串的第一个数2大,所以为true
  var box = ‘a‘ > ‘b‘; //false a=97,b=98
  var box = ‘a‘ > ‘B‘; //true B=66,a是97
  var box = 1 > {}; //false  如果有 toString()或 valueOf()则返回 1 > 返回数的值
  var box = 1>{
    toString:function(){
      return 2;
    }

  }//这样比较的是1>这个对象的返回值2吗,结果是false

二、在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
  1.一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
  2.一个操作数是字符串,则比较之前将其转成为数值再比较;
  3.一个操作数是对象,则先调用 valueOf()或 toString()方法后再和返回值比较;
  4.不需要任何转换的情况下,null 和 undefined 是相等的;
  5.一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
  6.两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返回 true,否则返回 false。
  7.在全等和全不等的判断上,比如值和类型都相等,才返回 true,否则返回 false。

   var box = 2 == 2; //true
  var box = ‘2‘ == 2; //true,‘2‘会转成成数值 2
  var box = false == 0; //true,false 转成数值就是 0
  var box = ‘a‘ == ‘A‘; //false,转换后的编码不一样
  var box = 2 == {}; //false,执行 toString()或 valueOf()会改变
  var box = 2 == NaN; //false,只要有 NaN,都是 false
  var box = {} == {}; //false,比较的是他们的地址,每个新创建对象的引用地址都不同
  var age = {};
  var height = age;
  var box = age == height; //true,引用地址一样,所以相等
  var box = ‘2‘ === 2 //false,值和类型都必须相等
  var box = 2 !== 2 //false,值和类型都相等了

三、特殊值对比表

时间: 2024-10-14 06:26:46

JavaScript的关系(比较)运算符的相关文章

javascript学习笔记---ECMAScript运算符(位运算符)

位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 位运算 NOT 位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一. 位运算 NOT 是三步的处理过程: 把运算数转换成 32 位数字 把二进制数转换成它的二进制反码 把二进制数转换成浮点数 例如: var iNum1 = 25; //25 等于 00000000000000000000000000011001 var iNum2 = ~iNum1; //转换为 11111111

javascript学习笔记---ECMAScript运算符(逻辑运算符)

Boolean 运算符非常重要,它使得程序语言得以正常运行. Boolean 运算符有三种:NOT.AND 和 OR. ToBoolean 操作 在学习各种逻辑运算符之前,让我们先了解一下 ECMAScript-262 v5 规范中描述的 ToBoolean 操作. 抽象操作 ToBoolean 将其参数按照下表中的规则转换为逻辑值: 参数类型 结果 Undefined false Null false Boolean 结果等于输入的参数(不转换) Number 如果参数为 +0, -0 或 N

JavaScript 通过关系找标签

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body><input type="text" id="userName"/><img src="user.png&

JavaScript 无符号位移运算符 &gt;&gt;&gt; 三个大于号 的使用方法

JavaScript 无符号位移运算符 >>> 三个大于号 的使用方法 JavaScript中的无符号位移运算符是用三个大于号来表示的 计算方法 例 100>>>2 100的二进制是 01100100 向右移2位后为 00011001 最后结果为25 100>>>2==25 无符号位移(>>>)和有符号位移(>>)的区别是 有符号位移运算时如果数字为正数时位移后在前面补0,为负数时则在位移后在前面补1 例 100>&

JavaScript中的逗号运算符

JavaScript中的逗号运算符(,)是顺序执行两个表达式. expression1, expression2 其中,expression1是任何表达式,expression2是任何表达式. 逗号运算符(,)导致按从

Java 和 Javascript的关系

写这篇文章是因为看到有人问这个问题,在想怎么会有这种SB问题,不过想想当初SB的我貌似也搞不清两者的关系,认知还是需要一个过程. 然后看到比较经典的回答有:Java 和Javascript的关系就像雷锋和雷峰塔的感谢,也像老婆和老婆饼的关系. 一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的编程语言,带有 "Java" 的名字有助于这门新生语言的传播. 它们的相同之处包括: 它们的语法和 C 语言都很相似:

JavaScript一元运算符、二元运算符和三元运算符

在JavaScript中,运算符可以根据其实际操作数的个数进行分类. JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并称为一个稍复杂的表达式.譬如a*b中的乘法运算符*,就是一个二元运算符.表达式-x中的-运算符就是一个一元运算符,是将操作数x求负值.最后,JavaScript支持一个三元运算符(ternary operator),条件判断运算符?:,它将三个表达式合并成一个表达式. 条件语句?(条件为真)执行语句A:(条件为假)执行语句B

javascript中关系运算符的说明

决定javascript语法的部分叫做ECMAScript,JavaScript的语法相比较java来说宽松了很多,同时也复杂了很多.在ECMAscript中进行关系符运算时,经常会遇到各种类型转换,大部分的类型转换都是自发的,在应用不同的操作符进行转换时,数据类型的转换又会有所不同. javascript中的关系运算符包括'>','<','>=','<='. 当两个做比较的操作数都是数字的时候,直接进行比较(当然了,这是废话). 当两个操作数都是字符串的时候,比较字符串对应的字符

javascript学习笔记---ECMAScript运算符(乘性,加性,关系,等性,关系,赋值,逗号运算符)

乘性:乘法,除法,取模,(特殊数字[Infinity,-Infinity,NaN,0]需要注意) 加性:加减法(同样特殊数字注意) 关系运算符执行的是比较运算.每个关系运算符都返回一个布尔值. 常规比较:数字与数字,字符串与字符串(按字符代码数值比较) 数字和字符串比较:先将字符串转为数字再比较 ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象. 等号和非等号 在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它