为什么我不能使用匿名函数表达式来访问数组索引位置?

Why can't I use an anonymous function expression for accessing an array index position?

在 JavaScript 中,可以使用此语法访问数组值...

const arr = ["one", "two", "three"];
console.log(arr[0]); // "one"

...或使用定义的函数 returns 一个数字来实现相同的结果:

const arr = ["one", "two", "three"];
const fn = () => 0;
console.log(arr[fn()]); // "one"

我可能有点脑残,但我就是不明白为什么完全相同的事情 在使用匿名函数表达式时不起作用 ?我不是以 0 作为数组索引位置评估器吗?

const arr = ["one", "two", "three"];
console.log(arr[() => 0]); // undefined

() => 0 returns一个函数,不是调用时返回的值。

您需要改为调用函数:

const arr = ["one", "two", "three"];
console.log(arr[(() => 0)()]);

主要区别在于匿名函数的概念。

const arr = ["one", "two", "three"];
const fn = () => 0;
console.log(arr[fn()]);

此处您将一个匿名函数分配给 fn 常量,并且您调用此函数在索引中返回 0。

在你的最后一个例子中,你只是在不调用函数的情况下分配函数,所以这就是它 returns 未定义的原因。

如果你想自动调用一个匿名函数,你只需要像这样调用它:

(() =>0)() // check the last pair of parentheses