更快的数组初始化:[] vs new Array()
问题:为什么使用 [] 来初始化数组比使用 new Array() 执行得更快?
答案:
除了之前的回答,让我们从编译器的角度来检查一下:
-
标记化:
- []:表示数组初始化(例如 arr = [];)。
- new Array:表示多个标记函数调用(例如 var arr = new Array();)。
-
对象创建:
- [] :直接导致数组创建。
- new Array:需要调用构造函数、检查参数,并可能执行其他类型检查。
-
函数调用:
- []:无函数调用开销。
- new Array:调用构造函数,通常比直接创建对象慢。
-
歧义:
- []:明确指示数组初始化。
- 新数组:需要 JavaScript VM 来确定特定操作(例如,新关键字、数组标识符)。
-
重载:
- []:始终创建array.
- new Array:根据提供的参数数量,可以有不同的行为。这进一步增加了对象创建过程中的复杂性和开销。
总之,使用 [] 进行数组初始化速度更快,因为它跳过了所需的额外处理、函数调用和歧义解析通过新数组。编译器可以直接创建数组,而不需要虚拟机执行这些额外的步骤。
以上是为什么使用 [] 初始化数组比 new Array() 更快?的详细内容。更多信息请关注PHP中文网其他相关文章!