【发布时间】:2021-06-04 09:29:56
【问题描述】:
我有以下代码:
const index = myArray.findIndex(
(f) =>
f.name === term1 ||
f.name === term2
);
当我尝试在 Chrome 开发工具中调试时,如果我在此 sn-p 之后设置断点,index 始终显示为undefined。我的理解是findIndex 应该始终返回一个number,即满足条件的数组的第一个索引,如果从未满足,则返回-1。
如果我在此代码后立即中断并使用控制台手动输入代码但未将其分配给任何内容,则控制台会显示正确的索引号。问题不在于在数组中找到的项目。它在那里,但在调试器中它只会显示未定义。
为什么此代码返回 undefined 而不是 number?
*我已经在 Firefox 和 Edge 中尝试过。那里也是同样的问题。
【问题讨论】:
-
当您说您在该代码“之后”设置断点时,您的意思是指在该代码之后立即,就像在
const声明之后的下一条语句中一样? -
是的。我已经尝试在
const后面的代码中的几个点进行中断。我检查的任何其他变量都是正确的,只是不是index -
听起来您没有正确使用调试器,或者您正在查看始终为
undefined的const语句的评估值。 Example -
那时,我唯一能想到的就是
Array.prototype.findIndex的错误 polyfill。 -
index稍后会在您的程序代码中使用吗?如果不是,该变量可能会被优化掉。另外,您使用的是转译器吗?它可能已经重命名了变量并且调试器在源映射中找不到目标名称。
标签: javascript arrays typescript ecmascript-6