You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript中myArray[length]会返回数组第一个元素?

拆解这段JavaScript代码的执行逻辑

嘿,这个问题挺有意思的,我来给你一步步梳理清楚为啥这段代码会输出Hello:

首先先把你的代码再贴出来方便对照:

var myArray = ["Hello", "world"] 
console.log(myArray[length])

核心问题:未声明的length标识符

你代码里的length并没有绑定到数组的myArray.length,也没有用var/let/const声明——这是一个未声明的变量。

非严格模式下的变量查找规则

在JavaScript的非严格模式(这段代码默认就是非严格模式)中,当你访问一个未声明的变量时,引擎会自动去全局对象上查找对应的属性:

  • 在浏览器环境里,全局对象就是window;
  • window.length是浏览器提供的一个内置属性,它的作用是返回当前页面中<frame>或<iframe>的数量。

为什么输出Hello?

如果你的页面里没有任何框架(绝大多数普通页面都是这样),window.length的值就是0。这时候myArray[length]就等价于myArray[0],而数组索引0对应的元素正是"Hello",所以console.log就会输出它。

额外补充几个验证场景

  • 如果你的页面里嵌入了1个<iframe>,那window.length会变成1,这时候代码会输出"world";
  • 如果在代码开头加上'use strict'开启严格模式,访问未声明的length会直接抛出ReferenceError,因为严格模式不允许这种隐式的全局变量访问。

内容的提问来源于stack exchange,提问作者Rush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:06:12