1. 程式人生 > >JavaScript語言精粹-毒瘤、糟粕(應對)

JavaScript語言精粹-毒瘤、糟粕(應對)

毒瘤

  1. 不使用全域性變數
  2. 使用塊級作用域,不var
  3. return與返回值要位於同一行,否則當自動插入分號後會返回undefined
  4. 當物件的屬性名與js保留字相同時,無法使用點語法,使用括號表示法
  5. js字元是16位的,Unicode將一對字元視為一個單一的字元,而js將其認為是兩個不同的字元
  6. 注意typeof對於null和正則返回'object'
  7. parseInt在遇到非數字時會停止,注意parseInt('16')和parseInt('16 jk')均返回16
  8. +運算子會根據引數來判斷是數值計算還是字串拼接
  9. NaN不是數字並且它不等於自身,typeof對於其返回'number',判斷值是否為數值型別可用typeof value === 'number' && isFinite(value)
  10. js的陣列是偽陣列,不需設定維度、不會越界,但效能不如真正的陣列,typeof不能區別陣列與物件,可用instanceof區別
  11. js的假值:0、NaN、''、false、null、undefined
  12. hasOwnProperty是一個function而不是運算子,不會查詢原型鏈上的屬性,可以被替換,不要使用obj.hasOwnProperty=null之類
  13. js的預設物件不是空物件,當原型鏈可能對我們產生影響時,使用Object.create(null)建立純淨的物件

糟粕

  1. 不使用==,而是===;不使用!=,而是!==
  2. 不使用with語句
  3. 不使用eval語句
  4. 適當地使用continue語句能提高可讀性,但效能不如重構去除continue的程式碼
  5. swith中的每個case下注意break,小心穿越到下個case
  6. if語句可以接受單行語句,但此時還是應加上花括號
  7. ++、--不夠嚴謹,使得程式碼過於擁擠,不使用的話程式碼可以變的更整潔
  8. 使用位操作符(& | ^ ~ >> >>> <<)要小心點,&容易誤寫為&&
  9. function語句定義的函式存在宣告提升,使用函式表示式或IIFE替代之
  10. 不要使用型別的包裝物件,形如new Boolean()、new Number()、new String(),另外也應避免使用new Object()、new Array(),使用{}、[]代替
  11. new運算子後跟的函式應以首字母大寫的形式命名
  12. js中的void是一個運算子,接受一個運算數並始終返回undefined,沒有作用,應避免使用

 

歡迎關注、點贊