使用这段代码:
addDefaultComments() {
$('.image').each((index, image) => {
Comment.defaults.forEach((comment) => {
debugger;
$('#images').find(`ul[data-id=${imageId}] ul#comments-${imageId}`).append(`<li>${comment.commentContent}</li>\n`);
})
})
}
在这个 debugger
语句中,我不应该访问图像和索引吗?当我调用他们时,它说他们没有定义。这不奇怪吗?
证明发生了一些奇怪的事情:
最佳答案
At this debugger statement, shouldn't I have access to
image
andindex
?
是的,你应该;而你这样做了——除非它们因为你没有使用它们而被优化掉。这就是这里发生的事情。 Chrome 正在积极优化该功能,因为您实际上并没有在任何地方使用 index
或 image
。如果您使用它们,它们就在那里:
(如果你想玩的话,这是 fiddle :http://jsfiddle.net/Lbe2pue0/)
只有当您不使用它们时它们才不存在:
(这是 fiddle :http://jsfiddle.net/Lbe2pue0/1/)
(我认为 Chrome 在箭头函数中而不是在 function
函数中进行此优化非常有趣...)
关于javascript - 无法访问嵌套的每个循环中的顶级变量。 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47060924/