JavaScript 开发人员不使用 Array.push() 是否有原因?

2024-07-04

我经常看到开发人员在 JavaScript 中使用如下所示的表达式:

arr = []
arr[arr.length] = "Something"
arr[arr.length] = "Another thing"

不会push更合适吗?

arr = []
arr.push("Something")
arr.push("Another thing")

事实上,我在今年年初也问过自己同样的问题。更新了新的测试用例 http://jsperf.com/array-push-vs-unshift-vs-direct-assignment/2 http://jsperf.com/array-push-vs-unshift-vs-direct-assignment/2

看起来push在 chrome 中要快得多,在 FF 中大约相等。另外,直接在 IE9 中速度更快,但我很想看看它在 IE10 中的表现如何。

我想说,大多数开发人员会假设设置数组的长度,然后使用直接赋值会更快,就像大多数编程语言的情况一样。但 JavaScript 不同。Javascript 数组并不是真正的数组 http://blog.niftysnippets.org/2011/01/myth-of-arrays.html,它们只是键/值映射,就像所有其他 JavaScript 对象一样。因此,预分配实际上是被置若罔闻。

我个人更喜欢push (:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 开发人员不使用 Array.push() 是否有原因? 的相关文章

  • 如何绕过浏览器每个域 6 个并发连接的限制?

    正如标题所述 如何绕过浏览器每个域 6 个连接的限制 我有一个网络应用程序 需要尽快从服务器下载数据 目前 我一次打开了大约十几个连接 但在网络选项卡中我看到其中几个连接是stalled 铬 或blocked Firefox 显示为灰色 经
  • 上传时防止空闲状态(iOS 上的 Web 应用程序)

    我正在构建一个将在移动和桌面上使用的网络应用程序 在 iOS 上进行测试后 我注意到我的手机将进入空闲状态 屏幕关闭 返回时显示锁定屏幕 即使有是一个正在上传的文件 ajax上传 有什么办法可以防止这种情况发生吗 我正在通过将应用程序作为
  • 使用“expo install”来安装我需要安装的所有内容是否安全?

    我正在做一个世博会项目 我们必须使用expo install添加其他展览库时 例如expo permissions expo av 但我们也可以使用expo install对于非世博图书馆 例如react native root toast
  • 为什么异步 XMLHttpRequest 优于同步请求? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 C# 中使用匿名类型创建对象文字时出现问题

    我正在尝试构建 JavaScript 对象文字的 C 近似值 以传递给 asp net MVC 中的视图模型 var obj new dynamic new name Id index Id width 40 align left new
  • 浏览器在使用 CSS 缩放图像时通常使用什么算法?

    我想得到canvas以与 CSS 相同的视觉保真度渲染缩放图像 根据我的测试 在 Chrome 版本 43 0 2357 130 中完成 它似乎不是 Lanczos3 即使我的测试重采样范围 http entropymine com res
  • WebAssembly InstantiateStreaming 错误的 MIME 类型

    我正在尝试获取本教程 此处 https www hellorust com demos add index html https www hellorust com demos add index html 工作 似乎无论我做什么 我都无法
  • 无法使用 webpack 和 Laravel mix 加载 popper.js

    我在我的项目中使用 bootstrap 4 beta 和 Laravel 5 4 并使用 npm 和 laravel mix 加载我的 js 依赖项 到目前为止 一切都运行良好 除了当我尝试使用 booostrap js 方法时 它向我抛出
  • 使用 GruntJs 缩小脚本

    我有几个 js 文件 我似乎可以让 GruntJs 正确地连接 缩小它们 如果我单独做每一个 它们就会工作得很好 如果我单独组合然后尝试缩小组合文件 它也不起作用 Here is the error 有想法该怎么解决这个吗 或者也许是什么原
  • requestAnimationFrame 在较弱的机器上运行缓慢。解决办法吗?

    所以 我正在制作一个动画 不是在网站 网页上 它使用Javascript 对于动画 我使用requestAnimationFrame代替setInterval as setInterval不能很好地满足我的需要 然而 尽管requestAn
  • 我应该担心 JavaScript 支持吗?

    我开发了一个支持ajax 的网站 然而 该网站目前无法在没有 JavaScript 的情况下运行 该网站在我测试过的任何浏览器以及 iPhone 诺基亚手机上都运行良好 但是 我还应该担心 javascript 支持吗 我知道有一些技术可以
  • 预加载队列中的 mp3 文件,以避免播放队列中下一个文件时出现任何延迟

    我正在编写一个脚本 其中我正在播放多个 mp3 并且每个文件都在队列中 播放下一个 mp3 文件会出现轻微延迟 因为缓冲 加载文件需要时间 我如何缓冲队列中的下一个 mp3 文件 以便所有文件顺利运行而没有任何延迟 getData 1 fu
  • 使用 Javascript 进行 SVG 旋转

    我已经在 HTML 页面中创建了一个 SVG 图像 现在我想移动 SVG 形状以使用 JavaScript 按钮 我的应用程序的 JSFiddle 在这里 http jsfiddle net johndavies91 xwMYY http
  • 为什么需要@babel-core

    我是 Babel 和 JS 的新手 我想知道何时以及为何使用 babel core 包而不是 babel cli From 巴贝尔官方文档 https babeljs io docs en Babel是一个工具链 主要用于转换ECMAScr
  • 如果按下警报,则转到“确定”按钮后的 URL

    我需要确保当用户在 JavaScript 警报窗口中单击 确定 时 浏览器会移动到不同的 URL 这可能吗 你是什 么意思 确保 alert message window location some url 在警报窗口中单击 确定 后重定向
  • 删除CKEditor图像插件中的htmlPreview

    我在 CKEditor 的图像插件中隐藏预览元素时遇到问题 我需要一个非常简单的图像对话框 其中只有图像源的输入字段和带有图像上传按钮的表单 因此 我使用这些自定义配置设置删除了不必要的元素 CKEDITOR on dialogDefini
  • 处理 jQuery 中的所有事件类型

    在使用 jQuery 的应用程序中 我希望每次触发任何类型的事件 包括自定义事件 时都记录到控制台 无论如何 是否可以在不修改 jQuery 源代码并且不绑定到每个可能的事件类型的长列表的情况下执行此操作 var oldTrigger jQ
  • 在 javascript/jquery 中从 JSON 中删除元素

    我在 javascript 中从 JSON 对象删除数据时遇到问题 我正在动态创建此 JSON 并且删除也将动态进行 下面是我的 JSON 和我所处的情况 brands 51 2046 53 67 64 现在 我必须从中删除 53 我正在使
  • 街景中标记上的 InfoWindows

    根据 Google 文档 当您在地图上创建标记时 市场也会 复制 到地图的街景版本上 但是 onClick 事件绑定不会被复制 或者至少看起来不会被复制 因此我无法在 StreetView 中打开标记上的 InfoWindow 理想情况下
  • JS:在调用文件中的每个其他函数之前调用某个函数

    我有一个关于在 JS 中更好地重用代码的问题 例如我有文件functions js具有以下功能 export const a gt export const b gt export const c gt const foo gt 我想在调用

随机推荐