gpt4 book ai didi

数组的Javascript索引是数组

转载 作者:行者123 更新时间:2023-12-01 15:10:02 24 4
gpt4 key购买 nike

我不理解下一行代码的 Javascript 解释:

var a = ["value"];
console.log(a[0]); // value
console.log(a[[0]]); // value
console.log(a[[[0]]]); // value
//...

为什么数组取值为0?

最佳答案

括号符号用作属性访问器,并在 ECMAScript Language Specification 中定义。 ,在“属性访问器”一章下。方括号之间的表达式在步骤 4 中处理为:

EvaluatePropertyAccessWithExpressionKey(baseValue, Expression, strict).


...依次执行以下步骤:

ToPropertyKey(propertyNameValue).


... which依次执行此步骤:

ToPrimitive(argument, hint String).


...如果您在规范中进一步深入研究,如果它是一个对象,则会将该表达式转换为字符串,使用 Symbol.toPrimitive (如果已定义)或 toString方法。是的,如果最外面的括号之间的表达式是一个数组(可能是嵌套的),例如 [0] 或 [[0]],...等,那么您将传递一个对象。
转换为字符串的数组(使用它的 toString() 方法)将生成一个逗号分隔的字符串值。这在嵌套数组中递归地起作用,因此这实际上意味着所有值,无论嵌套多深,都会出现在生成的逗号分隔字符串中。例如 [[1, 2], 3, [4, [5]]].toString()是“1,2,3,4,5”。
在您的示例中,您作为表达式传递给外括号对的数组中始终只有一个值 0。所以那个表达式,比如 [[[[[0]]]]].toString() ,解析为“0”。
所以我们得到 a["0"] ,与 a[0] 相同.

关于数组的Javascript索引是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62501789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com