javascript - 无法访问嵌套的每个循环中的顶级变量。 Javascript?

标签 javascript

使用这段代码:

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 语句中,我不应该访问图像和索引吗?当我调用他们时,它说他们没有定义。这不奇怪吗?

证明发生了一些奇怪的事情:

enter image description here

enter image description here

最佳答案

At this debugger statement, shouldn't I have access to image and index?

是的,你应该;而你这样做了——除非它们因为你没有使用它们而被优化掉。这就是这里发生的事情。 Chrome 正在积极优化该功能,因为您实际上并没有在任何地方使用 indeximage。如果您使用它们,它们就在那里:

Proof that it works fine with arrow functions in an up-to-date version of Chrome

(如果你想玩的话,这是 fiddle :http://jsfiddle.net/Lbe2pue0/)

只有当您使用它们时它们才不存在:

Proof they aren't there if you don't use them

(这是 fiddle :http://jsfiddle.net/Lbe2pue0/1/)

(我认为 Chrome 在箭头函数中而不是在 function 函数中进行此优化非常有趣...)

关于javascript - 无法访问嵌套的每个循环中的顶级变量。 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47060924/

相关文章:

javascript - 使用 jQuery 时的线条动画

javascript - forms.DateInput 默认值

php - 将 php webservice json 响应发送到 javascript

javascript - jquery keypress() 事件不适用于 keyup()

javascript - 在javascript中解析日期对象

javascript - 如何在两个日期之间定义剑道网格列过滤器?

javascript - 如何应用我的 React 样式与三元运算符内联?

Javascript - 自定义确认对话框 - 替换 JS 确认

javascript - 单击 JSF 表时打开一个新页面

javascript - 如何使用 PDF.js 阅读页脚文本?