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

JavaScript语言精髓

相关信息可以看这里: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值是可以修改的,