带有数组赋值的 JavaScript 意外控制台输出;

2024-04-10

在 webkit 浏览器(Chrome 16.0.912.77 和 Safari 5.1.2 - 7534.52.7)中进行数组分配后,我收到意外的控制台输出。

这是我的函数,它演示了该错误:

function test() {
    var myArray = [];
    console.log(myArray); // Should be [], but is [0]
    myArray.push(0);
}

我在 Firefox 7.0.1 中收到 [] 的预期输出。

[EDIT]

当我插入长时间同步睡眠时,问题并没有消失。这让我认为(1)即使 console.log 语句是异步的,它也在同一个线程中运行,(2)它在运行之前等待直到事件队列为空,(3)传递给控制台的引用当 console.log 最终执行时,.log 被转换为字符串 - 而不是在调用它时。

function sleep(millis){
  var date = new Date();
  var curDate = null;
  do { curDate = new Date(); }
  while(curDate-date < millis);
}

function test() {
    var myArray = [];
    console.log(myArray); // Should be [], but is [0]
    sleep(2000);    
    myArray.push(0);
}

这似乎不是理想的行为。


这是因为console.log是通过引用和异步的,并且您的push()在显示结果之前结束执行。

你可以快速做一下:

console.log(myArray.slice());

相反,用于调试目的。


为了更明显地测试这一点:

var a = []; console.log(a); a.push(1, 2, 3, 4, 5);

会给[1, 2, 3, 4, 5].

var a = []; console.log(a); setTimeout(function() {a.push(1, 2, 3, 4, 5);}, t);

当 t = 5 时,给出错误的结果;当 t = 100 时,给出正确的结果。

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

带有数组赋值的 JavaScript 意外控制台输出; 的相关文章

  • 设置 location.hash 时防止默认行为

    当我这样做时 location hash test url 会更新 页面会定位到具有该 id 的元素 有没有办法阻止页面定位到该元素 Solution 您无法阻止这种行为 但您可以通过暂时隐藏目标来愚弄它 例如 像这样 与 jQuery 无
  • 当标题中包含“&”时,电子邮件标题无法正确显示,如何在 JavaScript 中修复?

    我有一些代码以以下格式显示文章标题列表 简短描述和作者姓名 标题 作者姓名 描述 作者的姓名和描述与此处无关 因为它们始终显示正确 大多数标题也可以正确显示 以下是一些虚构的示例 关于银行业务您需要了解的最重要的一件事 作者姓名 正确显示
  • 修复输入字段后,html5 oninvalid 不起作用

    我的表单中有这个输入代码
  • 将 FireBug 用于带有框架的网站

    我下载了 Firebug 并尝试使用它来调试使用框架的站点的 JS 我的理解是 当我进入 Firebug 中的 脚本 选项卡时 我会看到 aspx 上的 JS 函数以及包含的任何文件中的 JS 并且我将能够设置断点 然而 我在这个网站上看到
  • 以编程方式在指令内添加指令

    我想将指令的另一个实例附加到父指令中 但我无法使用 apply 重新编译我的指令 我想我在某个地方错过了一些东西 我的 HTML 代码 div div div div
  • 是否可以进行条件解构或有后备?

    我有一个具有许多深层嵌套属性的对象 我希望能够访问 MY KEY 上的属性 如下 但如果该属性不存在 则获取 MY OTHER KEY 我怎样才能做到这一点 const X Y MY KEY Values segments segment
  • 用于传输命名参数和正文的云端点资源属性不起作用

    我正在尝试通过gapi client rpc调用实现对谷歌云端点的调用 如文档中所述 和Google Cloud Endpoints 使用 JS 客户端进行调用 传递参数和 JSON 正文 https stackoverflow com q
  • Chrome JavaScript 日期构造函数获取 1884 年之前的日期似乎是错误的

    如果我将 1 1 1753 午夜 的 unix 毫秒时间戳值 6847786800000 传递给 Chrome 中的 JavaScript Date 构造函数 则 Chrome 给出的日期看起来非常奇怪 当我使用带有七个参数的 Date 构
  • 从 html5

    我正在寻找一种方法来根据用户代理字符串将控件属性添加到视频标签 我不希望在 iPad 和 Android 之外的任何浏览器或设备上出现控件属性 所以我认为用户代理是最好的识别方法 因为 ipad 和 android 一词出现在各自的 UA
  • IE8 中空 div 层的 z-index 问题

    我在 IE8 中遇到 z index 问题 其他尚未测试 以下 JS 创建一些 html css document write img src border 0 document write div style background col
  • 如何避免 TypeScript 中出现虚假的“未使用参数”警告

    我遇到过很多次这种情况 最后决定弄清楚正确的方法是什么 如果我有一个声明方法的抽象父类 然后一些具体子类在其实现中实现真正的逻辑 并且显然使用方法参数 但某些子类不需要在该方法中执行任何操作 因此不要使用方法参数 那些不必执行任何操作的方法
  • 在 JQuery ui 自动完成中显示图像

    我有一个带有 JQuery ui 自动完成功能的脚本 可以完美运行 有一个显示用户名字和姓氏的搜索过程 但在我的数据库中 还有用户的图片 我想将其显示在带有名字和姓氏的建议中 数据库中pic包含图片url 剧本 function searc
  • Intro.js 2页然后返回首页

    我在用intro js http introjs com 为我的网站创建一个小介绍 我希望游览从第 1 页 主页 2 另一页 然后回到第 1 页 主页 我已经成功地从第 1 2 页开始 但不确定如何让它返回到第 1 页 我对 javascr
  • 在移动网站中处理 iPhone 事件(如向左滑动)

    iPhone 浏览器是否有可以使用 Javascript 挂钩的特殊事件 例如 如果用户向左滑动 我想执行某个操作 如果有类似的活动 很高兴看到所有这些活动的参考 理想情况下 有一天所有触摸屏移动浏览器都会有一个标准 您可以访问多点触控事件
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • JavaScript 中的最短路径

    几周来我一直在寻找一种在 JavaScript 中计算最短路径的方法 我一直在玩书数据结构和算法作者 格罗纳 Groner 名字恰如其分 https github com loiane javascript datastructs algo
  • Angular 停止 Enter 键提交

    I am trying to stop the Enter from submitting my button and rather make it point to another function I tried trapping th
  • 网络音频 API:查找、播放/缓冲进度

    当您使用 Chrome 中的音频元素播放音频时 您会听到烦人的咔嗒声和破裂声 至少在我的 64 位 Linux 安装下 即使在我格式化并安装了新的 Fedora 版本之后也是如此 Firefox 和 Opera 都可以 甚至 Virtual
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki
  • 如何在 Twilio 可编程聊天中的单个通道上侦听消息

    Using twilio chat js https www npmjs com package twilio chat如何在单个频道上收听消息 我发现这个问题 https stackoverflow com questions 54687

随机推荐

  • 在 Win32 上构建适用于 Android (ARMv7) 的 OpenSSL

    如何在 Win32 上构建适用于 Android ARM v7 使用 Android NDK 的 OpenSSL 直到 OpenSSL 的出现wiki http wiki openssl org index php Android和 set
  • 如何在 JMeter 中使用命令行参数

    我正在使用 Jmeter 测试 API 我想从终端参数化项目的路径 然后我想在 JMeter 中使用此参数 我通过命令行发送的参数 jmeter n t your script jmx Jurl abcdef com 我在用户定义变量中使用
  • 使用 itext pdf stamper 在 pdf 中添加多个附件

    我想在一个 pdf 文件中添加多个附件 当我进入循环时 它只附加最后一个附件 示例代码 PdfReader reader new PdfReader FILE PdfStamper stamper new PdfStamper reader
  • 在 Android Studio 中丢失对静态数据的引用

    当我的应用程序进入后台时 我遇到静态数据实例丢失的问题 从而导致空指针异常错误 静态数据非常依赖于上下文或 状态 并且通常不能在初始化时生成 为了确保我保留这些数据 我是否会被迫将数据写入存储 或者是否有其他方法来确保我的静态数据在应用程序
  • win10 应用程序 - 在列表顶部的新项目中添加动画

    我正在制作一个新闻源应用程序 它会定期将新内容添加到列表顶部 当我检查新商品时 可能有几十件或只有一件 我想要的是让最旧的新项目能够看到 这样他们就可以继续向上滚动以获取更新的故事 遗憾的是 该平台并不是免费提供的 然而有趣的是 它确实是免
  • 使用 pysnmp 从 MIB 文本约定转换 OID 值对

    我正在尝试编写一段代码 它接受一个 JSON 对象 其中 OID 作为键 OID 值作为值 一个例子是 1 3 6 1 4 1 562 29 6 2 3 Link Down 收到此 JSON 对象时 我想使用 PySNMP 转换 OID 和
  • 在哪里提供 NSURL 值?

    每次我运行该应用程序时 它都会崩溃并且控制台显示 由于未捕获的异常 MissingDatabaseURL 而终止应用程序 原因 无法获取 FirebaseDatabase 实例 在 FIRApp 中或从您的 databaseForApp U
  • 从文件名中提取版本

    这是我的示例文件名Text 2 23 txt我已经分离了扩展 但无法获取版本 因此我可以稍后在代码中使用它进行比较 我需要得到2 23 out 编辑 文件名可以采用多种形式 但版本始终位于文件名的末尾 string s f1 Name To
  • 如何在 Ruby 中将 JSON 转换为 XML?

    有没有办法在 Ruby 中将 JSON 转换为 XML require active support for to xml gem install activesupport use the 2 3 branch require json
  • 为什么我的 C# winforms 应用程序中的第一个 HttpClient.PostAsync 调用非常慢?

    我有一个像这样的 httpclient var client new HttpClient 我像这样发布 var result client PostAsync endpointUri requestContent 并得到这样的响应 Htt
  • IShellLink::SetIconLocation 将我的图标路径转换为 ​​%Program Files% 这是错误的

    有谁知道如何纠正这种行为 目前 当我们的安装程序安装我们的应用程序时 它会获得一个IShellLink 然后加载我们的快捷方式图标 在开始菜单和桌面中 所需的数据 然后使用IPersistFile 保存写出快捷方式 问题是为图标指定的路径
  • 中缀表示法的有趣行为

    有时 有人试图躲在电脑屏幕后面 试图摆脱女朋友 然而 我发现Scala有时和我的女孩一模一样 这将打印两个列表之间的交集 val boys List Person John Person Kim Person Joe Person Piet
  • MVVM - 分离视图之间的通信

    我试图弄清楚如何执行以下操作 我有一个CustomerListViewModel其中包含一个ObservableCollection
  • 在 Swift 中使用 Tab 键选择下一个 NSTextField

    在 Swift 中 有没有办法通过按键盘上的 Tab 来更改响应者或选择另一个文本字段 笔记 这是填空式申请 我的 VC 创建了一个单词列表 Word 每个单词都有自己的 WordView word wordView WordView 就是
  • Maven 3.5.2 无法将工件部署到 Artifactory,并出现错误 417

    我正在创建简单的pom项目如下
  • 在故事板中使用 UIPageViewController

    有没有一种方法可以在故事板中为 UIPageViewController 配置数据源 委托和视图控制器而无需编写代码 我确实在 UIPageViewController 中看到了数据源和委托的出口 但无法在场景之间建立连接 也无法将额外的控
  • Laravel 5.2:未找到 Imagick 类

    我们正在将 PDF 页面转换为多个单个图像 我们在stackoverflow中找到了一段代码片段 并将其转换为服务类 我们安装了 Imagick 它也显示在 phpinfo 中 然而 在我们的 Laravel 应用程序版本 5 2 中 我们
  • 如何设置 intel_idle.max_cstate=0 来禁用 c 状态?

    我想在我的计算机上禁用 c 状态 我在 BIOS 上禁用了 c state 但没有获得任何结果 不过 我找到了一个解释 大多数较新的 Linux 发行版 在配备 Intel 处理器的系统上 使用 intel idle 驱动程序 可能编译到内
  • 如何从Python列表中的前一个值中减去该值?

    我正在尝试获取列表中的值 例如 1 2 3 并将它们彼此相减 所以它会返回 1 1 因为第一个值是1 2第二个值是2 3 我如何在 python 中实现这一点 我努力了 x y for x y in list 但这会出现 需要多个值才能解包
  • 带有数组赋值的 JavaScript 意外控制台输出;

    在 webkit 浏览器 Chrome 16 0 912 77 和 Safari 5 1 2 7534 52 7 中进行数组分配后 我收到意外的控制台输出 这是我的函数 它演示了该错误 function test var myArray c