为什么将函数数组中的for..in转换为字符串?

时间:2018-12-18 16:37:32

标签: javascript

我对这个结果感到惊讶。我认为该代码段应该在控制台上显示“ function ...”:

let a = [ 
  function() { return 1; } 
];

for (let f in a) {
  console.log(f);
}

..但是它显示“ 0”-for循环将函数强制为字符串({f无法求值,否则会抛出错误,表明它不是函数)。在Firefox和Chrome中会发生这种情况。

如果使用(首选)数组索引迭代,则其行为将符合预期:

for (let i = 0; i < a.length; i++) {
  console.log(typeof(a[i]));
}

以上将“功能”打印到控制台。

为什么JS引擎强制在第一个代码段中将其字符串化?

PS:我知道在数组中使用..in是一种不好的形式,但是我只是想了解JS引擎在做什么。

0 个答案:

没有答案