javascript - TypeError: fns[(x * 2)] 不是函数
问题描述
所以我有一个作业问题需要解决。要求只是修复代码,以便控制台显示为真
var x = 2,
fns = [];
(function () {
var x = 5;
for (var i = 0; i < x; i++) {
// write here
}
})();
// DO NOT MODIFY BELOW CODE
console.log(x * 2===fns[x * 2]());
// console must show true
控制台输出是
未捕获的类型错误:fns[(x * 2)] 不是函数
我尝试将函数重写为数组中的元素之一,但控制台仍然显示错误。我重写了fns[x * 2]()
tofns[x * 2]
并且控制台显示返回 false (这很好,因为至少它不会抛出错误)但不能根据要求修改它
解决方案
数组的每个元素都需要是一个返回其在数组中的当前索引的函数:
var x = 2,
fns = [];
(function() {
var x = 5;
for (let i = 0; i < x; i++) {
fns[i] = () => i;
}
})();
// DO NOT MODIFY BELOW CODE
console.log(x * 2 === fns[x * 2]());
// console must show true
确保用let
,而不是var
(var
有问题)声明索引变量。
或者,更实用:
const fns = Array.from(
{ length: 5 },
(_, i) => () => i
);
let x = 2;
// DO NOT MODIFY BELOW CODE
console.log(x * 2 === fns[x * 2]());
// console must show true
推荐阅读
- django - 如何使用新字段扩展 django admin 用户模型?
- charts - 在 Google 数据洞察中展示多项选择题的结果
- terminal - Mac 终端中的 Curl Localhost 问题
- r - 使用 httr 通过 BitMex API 下订单
- elixir - 尝试编译 argon2_elixir 时,nmake 失败
- python - PyCharm 警告 Django 模型属性的未解析引用
- excel - 如何将第 n 个单元格的值返回到匹配值的右侧?
- c# - 如何在 C# 中设置 CompareToValue
- python - 如何使用文件路径作为函数参数
- c# - DataGrid - 在当前项目上运行事件处理程序的键