[Effective JavaScript 笔记]第52条:数组字面量优于数组构造函数

js的优雅很大程序要归功于程序中常见的构造块(Object,Function及Array)的简明的字面量语法。字面量是一种表示数组的优雅方法。

var a=[1,2,3,5,7,8];

也可以使用构造函数来替代

var a=new Array(1,2,3,5,7,8);

由于Array构造函数存在一些微妙的问题。当你使用时,确保别人没有重新包装过Array变量。

function f(Array){
    return new Array(1,2,3,4,5);
}
f(String);//String {0: "1", length: 1, [[PrimitiveValue]]: "1"}

还必须确保没有修改过全局的Array变量

Array=String;
new Array(1,2,3,4,5);//String {0: "1", length: 1, [[PrimitiveValue]]: "1"}

你还得担心一种特殊的情况。如果使用单个数字参数来调用Array构造函数,效果完全不同。它试图创建一个长度为给定参数的空数组。这意味着['hello']和new Array('hello'),但[17]和new Array(17)的行为完全不同。
字面量更清晰,更优雅,更不易出错,更规范,更一致。

提示

  • 如果数组构造函数的第一个参数是数字则数组的构造函数行为是不同的

  • 使用数组字面量替代数组构造函数

posted @ 2016-06-30 09:27  脚后跟着猫  阅读(253)  评论(0编辑  收藏  举报
返回
顶部