以下のコードを実行するとa[2]の要素が削除されるので最後はlengthが3ではなく2になるはずです。(実際オライリー本の同様のコードではそのようになる旨のコメントが付いている)

var a = [1,2,3];
delete a[2];
console.log(a.length);

しかし、Chrome 61.0.3163.100(64ビット)で確かめると最後の結果は2ではなく、3となっています。

実際、以下のコードで配列がどうなっているか確かめると、

console.log(a)

以下のような配列になっていてlengthが3である事が確認できます。

[1, 2, empty × 1]

オライリー本(javascript 第6版 P89)では2になると書かれている以上、仕様が変わったという事でしょうか?それともただ単に誤字なのでしょうか?

もし仕様が変わったのであれば、何故このような仕様になったのでしょうか?