1. ==
和===
區別
之前理解:前者檢查值的等價性,而後者檢查值和類型兩者的等價性,一般隨意兩者隨意使用
讀書之後理解:前者在允許強制轉換的條件下檢查值的等價性,而後者是在不允許強制轉換的條件下檢查值的等價性。判斷是何時使用哪個的規則:
- 如果一個比較的兩個值之一可能是true或false值,避免
==
而使用===
- 如果一個比較的兩個值之一可能是這些具體的值(0,"",或[] —— 空數組),避免
==
而使用===
- 在 所有 其他情況下,你使用==是安全的。它不僅安全,而且在許多情況下它可以簡化你的代碼並改善可讀性。
也就是當你可以確定你比較的值的時候,使用 ==
是安全的,當你不能確定你比較的值的時候,使用===
, 這在項目中尤其需要注意,有些使用接口返回的字段比較,並不能確定接口是否一定返回了該字段。
2. 閉包
在JavaScript中閉包最常見的用法就是模塊模式。模塊讓你定義對外面世界不可見的私有實現細節(變量,函數),和對外面可訪問的公有API。
function User(){
var username, password;
function doLogin(user,pw) {
username = user;
password = pw;
// 做登錄的工作
}
var publicAPI = {
login: doLogin
};
return publicAPI;
}
// 創建一個 `User` 模塊的實例
var fred = User();
fred.login( "fred", "12Battery34!" );