* [21.1](https://github.com/yuche/javascript#21.1)?在語句開始時執行類型轉換。
* [21.2](https://github.com/yuche/javascript#21.2)?字符串:
~~~
// => this.reviewScore = 9;
// bad
const totalScore = this.reviewScore + '';
// good
const totalScore = String(this.reviewScore);
~~~
* [21.3](https://github.com/yuche/javascript#21.3)?對數字使用?`parseInt`?轉換,并帶上類型轉換的基數。
~~~
const inputValue = '4';
// bad
const val = new Number(inputValue);
// bad
const val = +inputValue;
// bad
const val = inputValue >> 0;
// bad
const val = parseInt(inputValue);
// good
const val = Number(inputValue);
// good
const val = parseInt(inputValue, 10);
~~~
* [21.4](https://github.com/yuche/javascript#21.4)?如果因為某些原因 parseInt 成為你所做的事的瓶頸而需要使用位操作解決[性能問題](http://jsperf.com/coercion-vs-casting/3)時,留個注釋說清楚原因和你的目的。
~~~
// good
/**
* 使用 parseInt 導致我的程序變慢,
* 改成使用位操作轉換數字快多了。
*/
const val = inputValue >> 0;
~~~
* [21.5](https://github.com/yuche/javascript#21.5)?**注:**?小心使用位操作運算符。數字會被當成?[64 位值](http://es5.github.io/#x4.3.19),但是位操作運算符總是返回 32 位的整數([參考](http://es5.github.io/#x11.7))。位操作處理大于 32 位的整數值時還會導致意料之外的行為。[關于這個問題的討論](https://github.com/airbnb/javascript/issues/109)。最大的 32 位整數是 2,147,483,647:
~~~
2147483647 >> 0 //=> 2147483647
2147483648 >> 0 //=> -2147483648
2147483649 >> 0 //=> -2147483647
~~~
* [21.6](https://github.com/yuche/javascript#21.6)?布爾:
~~~
const age = 0;
// bad
const hasAge = new Boolean(age);
// good
const hasAge = Boolean(age);
// good
const hasAge = !!age;
~~~
- 關于
- 1. 類型
- 2. 引用
- 3. 對象
- 4. 數組
- 5. 解構
- 6. 字符串
- 7. 函數
- 8. 箭頭函數
- 9. 構造函數
- 10. 模塊
- 11. Iterators & Generators
- 12. 屬性
- 13. 變量
- 14. 提升
- 15. 比較運算符 & 等號
- 16. 代碼塊
- 17. 注釋
- 18. 空白
- 19. 逗號
- 20. 分號
- 21. 類型轉換
- 22. 命名規則
- 23. 存取器
- 24. 事件
- 25. jQuery
- 26. ECMAScript 5 兼容性
- 27. ECMAScript 6 編碼規范
- 28. 測試
- 29. 性能
- 30. 資源
- 31. 使用人群
- 32. 翻譯
- 33. JavaScript 編碼規范說明
- 34. 一起來討論Javascript
- 35. Contributors
- 36. License