码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript的关系(比较)运算符

时间:2015-06-07 23:10:19      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

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

 

一、和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
  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,值和类型都相等了

 

 

 

 

三、特殊值对比表

 技术分享

 

JavaScript的关系(比较)运算符

标签:

原文地址:http://www.cnblogs.com/LO-ME/p/3580973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!