好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

JavaScript 比较运算符

JavaScript 比较运算符

比较运算符用于比较两个表达式的结果。如变量 num 加上 变量 offset 是否 大于0 ,大于就是 一个 比较运算符。

比较运算符还分为 相等运算符 与 关系运算符 。

相等运算符:

== 相等 != 不相等 === 严格相等 !== 严格不相等

关系运算符:

> 大于 >= 大于等于 < 小于 <= 小于等于

运算符返回的都是布尔值。

运算符左右的值也被称为操作数。

1. 相等运算符

相等运算符用于判断运算符左右两边的值是否一致。

很多资料也会把相等称为等于,严格相等被称作严格等于。

1.1 相等

相等运算符在进行比较的时候,如果两边操作数数据类型不同,则会尝试转换成相同的类型再进行比较,如果转换成相同类型后的值相同,则返回 true,否则返回 false。

如果比较的两个操作数是引用类型,则会比较内部的引用(是否引用同 一个 内存地址上的值)。

  '3'   ==   ;   // true 
  ==   '3'  ;   // true 

  ==   ;   // false 

  +    ==   ;   // true 

 var  obj1  =   { a :   }  ; 
obj1  ==   { a :   }  ;   //false 

 var  obj2  =  obj1 ; 
obj1  ==  obj2 ;   // true 

undefined  ==   null  ;   // true 

  ==   true  ;   // true 
  ==   false  ;   // true 
 

因为 内容 比较简单,推荐直接在控制台调试,可以 快速 看到结果。

具体的转化规则可以查阅 隐式转换 章节。

注意:相等会对不同类型的比较数据进行隐式转换,为了防止误导阅读 代码 的开发者对转换进行猜测,以及避免一些不可控的问题,大部分开发者会选择不使用相等。

1.2 不相等

不相等的比较机制和相等一致,类型相同直接比较,不相同的会尝试转换成相同类型,碰到引用类型则比较引用地址是否一致。区别就在于最后返回的结果与相等相反,比较结果如果不一致,则返回 true,一致则返回 false。

   !=   ;   // false 
  !=   ;   // true 

 var  obj1  =   { a :   }  ; 
obj1  !=   { a :   }  ;   // true 
 

1.3 严格相等

严格相等在比较的时候,碰到两边的操作数类型不同,则会直接返回 false ,不会进行类型的转换。

当类型一样时,则比较等号两边的值是否相等,相等则返回 true ,否则返回 false。

   ===   '1'  ;   // false; 

  ===   false  ;   // false 
 

严格相等更加严格,程序中使用严格相等可以避免许多不可控的类型转换,特别是当开发者不熟悉转换规则时候,应尽可能使用严格相等。

1.4 严格不相等

严格不相等在比较的时候,如果两边的操作数不相等则返回 true ,否则返回 false 。其和严格相等一样,不会进行类型转换。

   !==   ;   // false 
  !==   ;   // true 

  !==   '1'  ;   // true 
undefined  !==   null  ;   // true 
 

注意:在做不相等运算的时候,也应该尽可能选择严格不相等,原因与建议使用严格相等一致。

2. 关系运算符

2.1 大于

大于运算符会在左操作数大于右操作数的时候返回 true,否则返回 false。

   >   ;   // false 
  >   ;   // false 
  >   ;   // true 
 

2.2 大于等于

大于运算符会在左操作数大于等于右操作数的时候返回 true,否则返回 false。

   >=   ;   // false 
  >=   ;   // true 
  >=   ;   // true 
 

2.3 小于

小于运算符会在左操作数小于右操作数的时候返回 true,否则返回 false。

   <   ;   // true 
  <   ;   // false 
  <   ;   // false 
 

2.4 小于等于

小于等于运算符会在左操作数小于等于右操作数的时候返回 true,否则返回 false。

   <=   ;   // true 
  <=   ;   // true 
  <=   ;   // false 
 

3. 注意点

3.1 字符串进行比较

假如比较运算符的两侧操作数都为字符串,则碰到 中文 ,会将 中文 转化成对应的 Unicode 码,碰到英文则转化成对应的 ASCII 码,再对码值进行比较。

  'a'   >   'z'  ;   // false 
 

a 的 ASCII 码为 97, z 的 ASCII 码为 122,两者在比较的时候相当于是 97 > 122 ,结果就是 false。

如果碰到有多个字符,则会依次进行比较。

  'aaaaaz'   >   'aaaaaaaaa'  ;   // true 
 

两个操作数前五位都是 a ,所以第六位才能决定出结果。

4. 小结

比较运算符主要用于比较两个值的大小关系,特别需要注意的是严格相等与相等的区别。

JavaScript 逻辑运算符 ? ?JavaScript 算数运算符

查看更多关于JavaScript 比较运算符的详细内容...

  阅读:63次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源