面试题答案
一键面试- 兼容性概述
- 在现代浏览器(如 Chrome、Firefox 等)以及大多数场景下,
new Array()
和[]
创建数组的方式在兼容性上没有显著差异。然而,在较老的浏览器尤其是 IE 浏览器中,new Array()
存在一些特殊情况。
- 在现代浏览器(如 Chrome、Firefox 等)以及大多数场景下,
new Array()
特殊情况- 单个数字参数:
- 在现代浏览器中,
new Array(n)
(n
为数字)会创建一个长度为n
的数组,数组元素为空(undefined
)。例如:
- 在现代浏览器中,
- 单个数字参数:
let arr1 = new Array(5);
console.log(arr1.length); // 输出 5
console.log(arr1[0]); // 输出 undefined
- 在较老的 IE 浏览器(如 IE8 及以下)中,如果使用 `new Array(n)`,且 `n` 是介于 `0` 到 `2^32 - 1` 之间的整数,它会创建一个长度为 `n` 的数组;但如果 `n` 不在这个范围内,会抛出 `RangeError`。而在现代浏览器中,`n` 超出范围时,同样会抛出 `RangeError`。
- 多个参数:
new Array()
接受多个参数时,会创建一个包含这些参数的数组。例如:
let arr2 = new Array(1, 2, 3);
console.log(arr2); // 输出 [1, 2, 3]
- 这种情况在不同浏览器(包括老版本 IE)中兼容性较好,都能正确创建包含给定参数的数组。
3. []
创建数组
- 使用
[]
创建数组是一种简洁的方式,在所有主流浏览器(Chrome、Firefox、IE 等)中兼容性都非常好。例如:
let arr3 = [1, 2, 3];
console.log(arr3); // 输出 [1, 2, 3]
- 它不存在像
new Array()
单个数字参数在老版本 IE 中的特殊情况,无论何时使用[]
创建数组,都能按预期创建包含给定元素的数组。
总体来说,为了更好的兼容性,尤其是考虑到老版本 IE 浏览器,在创建数组时,优先使用 []
的方式。如果必须使用 new Array()
,在传递单个数字参数时要注意其在老版本 IE 中的特殊行为。