为什么我不能使用匿名函数表达式来访问数组索引位置?
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
在 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