javascript - 使用单个整数数组访问另一个数组中的项目时会发生什么

标签 javascript

我对这有效感到有点惊讶:http://jsfiddle.net/7yfpc1nL/3/

const arr = ['a', 'b'];
const r = arr[[
  [0]
]];
console.log(r);

JavaScript 是否将 [[0]] 强制转换为 0?这里发生了什么魔法?

最佳答案

是的,当使用[]运算符访问对象的属性时,JavaScript将参数强制为字符串,[[0]]的字符串形式为只是 0,因此这是访问第零个元素的迂回方式。

举例说明:

const arr = ['a', 'b']
const idx = String([[0]]) // => "0"
arr[idx] // => "a"

我们可以验证参数的字符串形式是否按如下方式使用:

const obj = {
  toString: function() {
    console.log('OK: called obj.toString()')
    return 1
  }
}
arr[obj] // => "b"
// OK: called obj.toString()

关于javascript - 使用单个整数数组访问另一个数组中的项目时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956009/

相关文章:

javascript - 使用 this.form.submit() 提交表单后无法获取表单元素的值;

Javascript:替换字符串中的特定单词

javascript - 闭包编译器修改字符串中的结束括号

javascript - 当搜索图标位于 LTR 网站左侧时扩展搜索栏问题

javascript - 为什么在这种情况下 JavaScript 中的 let 与 var 不同

javascript - 如何让 Babel 和 React 与我的 Express 应用程序配合使用?

javascript - 如何修复未捕获的类型错误

javascript - jquery slider 未初始化值

javascript - 如何自动改变网站方向LTR\RTL?

javascript - 删除元素内句子的一部分