给javascript初学者形成良好代码风格的24点建议---->1

  前几天阅读了一篇文章:24 JavaScript Best Practices for Beginners  ,感觉其中的建议非常不错,特此记录下来与大家一起分享。

  • 使用'==='代替'==',

  js中有2种操作符来判断2个变量或者对象是否相等,'==='以及'!=='和'=='及'!=',当进行比较的时候,我们推荐总是使用前者,因为如果进行比较的2个操作数是不同的类型,则===肯定返回false,而当使用==的则会发生类型转换,然后再判断是否相等,这就存在一个隐患,如下:

1 var o1 = 1 ;
2 var 02 = '1' ;
3 alert(01==02) ; //此时会将字符串o2先转换成number类型的1,然后比较,结果为true
4 alert(01===02) ;//由于o1和o2是不同的类型,所以结果为false

其实'=='和'==='的唯一区别就是在进行比较时是否自动进行类型转换。既然说到相等操作符,则有必要详细探讨一下类型转换的规则:
[1].  如果有一个操作数是布尔值,则在比较相等性之前,现将其转换成数值----->false转换成0,true转换成1

[2].  如果一个操作数是字符串,另一个是数值,则比较之前将字符串转换为数值

[3].  如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。

       

        '=='操作符在进行比较时要遵循下列规则:

            1. null和underfined是相等的

        2. 比较相等性之前,null好undefined是不能被转换成其他类型的

        3. 如果有一个操作数是NaN,则比较结果为false,即使是NaN==NaN,结果也为false

        4. 如果两个操作数都是对象,则比较他们是不是同一个对象

 1 alert(null == undefined) ;  //true
 2 alert(NaN == NaN) ;         //false
 3 alert(5 == NaN) ;           //false
 4 alert('1' == true) ;        //true
 5 alert(2 == true) ;          //false
 6 alert(null == 0) ;          //false 
 7 alert(null === undefined) ; //false,因为null和undefined是不同的类型
 8 var o1 = {name:'lzy'};
 9 var o2 = {name:'lzy'};
10 alert(o1 == o2) ;           //false
11 o1 = o2 ;
12 alert(o1 == o2) ;           //true
13 alert(o1 === o2) ;          //true

 

 

posted @ 2013-12-07 16:50  Thunderstorms  阅读(201)  评论(0编辑  收藏  举报