* [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