JavaScript语言精粹 – Douglas Crockford 著 / 赵泽欣 鄢学鹍 译

值得反复读。

版次:2012 年 9 月第 2 版

  • JavaScript 只有一个数字类型。它的内部被表示为 64 位的浮点数,和 Java 的 double 数字类型一样。
  • 当一个方法被调用时,this 被绑定到该对象。如果调用表达式包含一个提取属性的动作(即包含一个 . 点表达式或 [subscript] 下标表达式),那么它就是被当做一个方法来调用。
  • 当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用的,以此模式调用函数时,this 被绑定到全局对象。
  • 一些语言提供了尾递归优化。这意味着如果一个函数返回自身递归调用的结果,那么调用的过程会被替换为一个循环,它可以显著提高速度。
  • 模块模式的一般形式是:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数;最后返回这个特权函数,或者把它们保存到一个可访问到的地方。
  • length 属性的值是这个数组的最大整数属性名加上 1。它不一定等于数组里的属性的个数。[] 后置下标运算符把它所含的表达式转换成一个字符串,如果该表达式有 toString 方法,就使用该方法的值。这个字符串将被用做属性名。如果这个字符串看起来像一个大于等于这个数组当前的 length 且小于 4294967295 的正整数,那么这个数组的 length 就会被重新设置为新的下标加 1。
  • 判断数组:Object.prototype.toString.apply(arr) === '[object Array]'
  • 可处理正则表达式的方法有 regexp.execregexp.teststring.matchstring.replacestring.searchstring.split
  • 有时候觉得注释就像一个时间机器,我用它发送重要的信息给未来的我。
  • 二进制的浮点数不能正确地处理十进制的小数,因此 0.1 + 0.2 不等于 0.3。这是 JavaScript 中最经常被报告的 bug,并且它是遵循二进制浮点数算术标准(IEEE 754)而有意导致的结果。
  • 判断数字:typeof str === 'number' && isFinite(str)
  • 在 ECMAScript 规范第 5 版中,明确规定了 NaNundefined 为常量,而之前的版本中都未明确规定。

发表评论

电子邮件地址不会被公开。 必填项已用*标注