《JavaScript 权威指南》P147的一处分析

目录

情景

  在《JavaScript权威指南 第六版 中文版》P147,讲到稀疏数组时,书中给出如下的分析和例子:

  读完后感觉第一个红框和第二个红框中的表述不是很清楚,有些矛盾。于是在chrome浏览器的控制台进行测试,结果如下:

  1. 第一个红框对应结果
  2. 第二个红框对应结果
  3. 第三个红框对应结果

    也就是说实测结果与书中第一个红框中的蓝色小框表述相反:0 in a1输出的值是false。

分析

  以下是《JavaScript: The Definitive Guide》原书第六版对应地方的原文:

由此可以看出,原书中只有中文版截图中的第一个红框中的内容,而中文版在翻译时译者加上了后面两段话。猜测可能译者在浏览器中得到的结果也与原书不同,因而补上了两段话加以说明。


结论

  1. 中文版截图中,第二个红框中的运行结果是译者在新版浏览器环境中测试得出的。即对于最新的情况:当省略数组直接量中的值时,得到的数组也是稀疏数组,并且省略掉的值是不存在的。
  2. 中文版截图中,第三个红框中的说明表明:经译者测试,在旧版本浏览器中,[1,,3]和[1,undefined,3]是一样的,且对于省略的值,认为其是存在的(为undefined),因而作者写作时候用的是旧版浏览器,测试得出的结果是true。
  3. 只记这个结论:省略数组直接量中的值(写连续的逗号)与显式写明undefined是不同的—前者认为在该索引处没有元素,后者认为在该索引处有一个undefined元素。