《Effective Javascript》
68个有效方法,选择性摘录。
2、理解JavaScript的浮点数。
!!JavaScript中所有的数字都是双精度浮点数。
3、当心隐式的强制转换。
!!JavaScript中有7个假值:false、0、-0、""、NaN、null和undefined。
4、原始类型优于封装对象。
!!除了对象以外,JavaScript有5个原始值类型:布尔值、数字、字符串、null和undefined。
!!获取和设置原始类型值的属性会隐式地创建封装对象。
6、了解分号插入的局限。
!!第一条规则:分号仅在}之前、一个或多个换行之后和程序输入的结尾被插入。
!!第二条规则:分号仅在随后的输入标记不能解析时插入。
!!第三条规则:分号不会作为分隔符在for循环空语句的头部被自动插入。
11、熟练掌握闭包。
!!第一个事实:JavaScript允许你引用在当前函数以外定义的变量。
!!第二个事实:即使外部函数已经返回,当前函数仍然可以引用在外部函数定义的变量。
!!第三个事实:闭包可以更新外部变量的值。
19、熟练掌握高阶函数。
!!高阶函数就是那些将函数作为参数或返回值的函数。
24、使用变量保存arguments的引用。
!!当引用arguments时当心函数嵌套层级。
34、在原型中存储方法。
!!将方法存储在原型中优于存储在实例对象中。
35、使用闭包存储私有数据。
!!闭包变量是私有的,只能通过局部的引用获取。
36、只将实例状态存储在实例对象中。
!!在原型对象中最常见的数据是方法,而每个实例的状态都存储在实例对象中。
!!共享可变数据可能会出现问题,因为原型是被其所有的实例共享的。
37、认识到this变量的隐式绑定问题。
!!this变量的作用域总是由其最近的封闭函数所确定的。
49、数组迭代要优先使用for循环而不是for...in循环。
50、迭代方法优于循环。
55、接收关键字参数的选项对象。
!!所有通过选项对象提供的参数应当被视为可选的。