《JavaScript语言精髓与编程实践(第二版)》勘误【2012.12】

时间:2021-12-05 05:44:24

《JavaScript语言精髓与编程实践(第二版)》勘误【2012.12】

相关信息可以看这里:http://blog.csdn.net/aimingoo/article/details/7362552

本文只发勘误。

============================================

在第二印次中,已经处理的勘误:12处 (该版有两个印次,第二印次已经修订了这些勘误) ============================================ P6:正文倒数第二行中:
  缘于DHTML(Dynamic HML,动态网页)带来的……
改为:
  缘于DHTML(Dynamic HTML,动态网页)带来的……


P35:(除页首的加框注释之外的)正文第一段第一行:
  typeof运算总是以字符串形式返回上述6种类型之一。
改为:
  typeof运算总是以字符串形式返回上述6种类型之一(另请参见章节5.7.1)。


P42:倒数第二行中:
  ——一个值类型或引用类型的数据,或者undefined。
改为:
  ——一个值类型(包括undefined)或引用类型的数据。


P43:第二段的最末一行中:
  ……普通的表达式一样:值类型或引用类型的数据,或者undefined。
改为:
  ……普通的表达式一样:值类型(包括undefined)或引用类型的数据。


P194:表3-13,表格下脚注:
  *注1:必须至少具有get或set两种方法之一。
改成:
  *注:必须至少具有get或set两种存取描述之一。


P205:本页最后一行中:
  ……,着实不妥。
改为:
  ……,着实不妄。


P215:倒数第二段、第二行中:
  第10行代码的实质是,刚被创建的对象实例。先通过点运算符“.”进行了一次……
改为:
  第10行代码的实质是:对刚创建出的对象实例使用点运算符“.”进行一次……


P422:脚注1中开始处:
  在更新的Spider JavaScript中,……
改为:
  在更新的SpiderMonkey JavaScript中,……


P429:该页中有三段代码,第一、二段中各有一个(共二处):
  [idx]
改为:
  [x]


P184:代码最后4行中(有两处):
  unknowObj
改为:
  unknownObj


P242:第一段代码中,第5行(一处):
  'unknow type'
改为
  'unknown type'


P344-345两页中(共5处):
=======
  1)P344页:第一段代码的第一行注释,以及第一段正文第一行(两处):
  'date'和'unknow'
改为
  'date'和'unknown'


  2) P344页:最后一段正文的第四行(一处):
  date与unknow
改为
  date与unknown


  3) P345页:第一段代码倒数第四行(一处):
  // ……所识别的类型:unknow
改为
  // ……所识别的类型:unknown


  4) P345页:第三行正文文字(一处):
  ……则理解为'unknow',
改为

  ……则理解为'unknown',



============================================

第二印次之后发现的勘误:22处 ============================================

P264,正文第三段:

  换而言之,正如由于已经存在……

改为

  换而言之,正由于已经存在……


P113,正文倒数第一段之上(列表项,第二项):

  如果其,中运算的结果……

改为

  如果其中运算的结果……


P100,第三个示例代码块中,有一半的错误。行1~2所示的示例,在新的Javascript实现中,这种情况下仍然能触发严格模式,因为纯粹由回车换行表示的空行不会解析为语句行(在旧的或不正确的实现中,仍然存在这一现象);对于行4所示的例子,由分号来表示的空行,是会触发严格模式的,因为分号是明确的语法元素。


P138,正文倒数第二段,末二行:

  因此“if语句包含了for语句的语法作用域”。

改为

  因此“if语句包含了while语句的语法作用域”。


P152,正文第四段第一行行首:

  全部变量的作用域……

改为

  全局变量的作用域……


P311,第三个代码块,第一行(这里可能是印刷问题):

  checkInstance 2 = function() {

改为

  checkInstance_2 = function() {


P151,正文第三段,第三行:

  而局部不能访问全局的信息,

改为

  而全局不能访问局部的信息,


P179,代码块,第二行:

  var bird = (arguments、length、== 1 ? arguments[0] : this);

改为

  var bird = (arguments.length == 1 ? arguments[0] : this);


P219~P220,这两页的正文中有六处,将单词expression,写成了expresstion,多了一个字母“t”。但示例代码中没有错误。


P213,页面底部一行(代码块中最后一行):

  var fac = new Factiory();

改为

  var fac = new Factory() ;


P209,最后一个正文段落,第三行:

  函数get_value用于获取值。

改为

  函数get_value()用于获取值。


P229~P230,这里有两个代码块,其中P229的“示例6”,与P230中4.4.4小节的第一个代码块/行:

  (if #f + *) 3 4)

改为

  ((if #f + *) 3 4)


P225,最末一行:

  函数对IE样式表达式的补充及其效果如图4-2所示。

改为

  函数对IE样式表表达式的补充及其效果如图4-2所示。


P225,正文第三段,第二行(等号右边多出一空格):

  来决定指定元素(id= rightSpan)的……

改为

  来决定指定元素(id=rightSpan)的……


P228,第二个代码块,第6~7行代码:

  else {y;

    return x *

  }

改为

  else {

    return x * y;

  }


P130,正文最末一段,第二行:

  在是JavaScript 1.1中提出的,

改为

  是在JavaScript 1.1中提出的,


P275,正文的4.7.1小节的第三段:

  由于在JavaScript中允许局部变量访问upvalue和全局变量,

改为

  由于在JavaScript中允许在函数内访问upvalue和全局变量,


P276,正文第一段,第二行:

  对于严格模式下的函数来说是不正确的。

改为

  对于严格模式下的函数来说是不能访问的。


P252,正文第三段,最末两行:

  ……的原因是:第二次执行函数时,在进入函数前varDecls被再次初始化了。

改为

  ……的原因是:第二次执行的函数是一个新的函数实例,因此有一个新初始化的varDecls。


P308,示例6,应对注释略作修改:

  // 示例6:检测表达式的语法声明效果

改为

  // 示例6:检测表达式的语法声明效果(该示例所示效果在IE8以上已被修正)


P196,表格(除表头外)的第三项

  getOwnPropertyDescriptor(obj)

改为

  getOwnPropertyDescriptor(obj, propName)


P193~P194,表格。这两份表格中,对于configurable项的说明中,在“含义”列:

  值为false时,Writable与Enumerable值是可以修改的,

改为

  值为true时,Writable与Enumerable值是可以修改的,