黑铁时代
Programing is not only one kind of technology, but also one kind of art.

很多人在刚开始学习JavaScript的时候,应该都很惊讶得发现竟然还有 === 这种操作符。

 

在JavaScript中的确存在 == 和 === 两种比较操作符,它们的区别是:

  == 要先转换需要比较的两个操作数,然后在进行比较;

  === 不进行任何转换,直接进行比较;

 

说通俗点就是:用 == 进行比较的两个操作数,只要值相等,类型不等都会返回 true;而 === 要求类型和值都相等才会返回 ture;

 

在用 == 进行比较的时候,转化规则如下:

  true会转化成1,false转化成0;

  如果是字符串和数值进行比较,字符串会转化成数值;

  如果其中一个是对象,会默认调用对象的valueOf方法取出其原始值;

  null == undefined 得到的结果是ture;

  如果一个操作数是NaN,那么始终返回false,因为根据ECMA标准,NaN不等于任何值和对象,包括它自己,就是说即使用 NaN == NaN 也是返回false;

  如果两个操作数都是对象,那么判断这两个对象是否指向同一个对象,是返回true,否则返回false(因为JavaScript中的对象都是引用传递,并且属于共享对象的方式,所以两个指向同一个对象的变量实际是共享同一个对象的地址);

posted on 2012-06-11 23:10  黑铁时代  阅读(132)  评论(0编辑  收藏  举报