给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