小编use*_*853的帖子

让关键字和关闭?

我正在学习ES6中的新功能.我有关于let的问题,它关注此代码:

for (let i = 0; i < 45; i++) {
    var div = document.createElement('div');
    div.onclick = function() {
        alert("you clicked on a box #" + i);
    };
    document.getElementsByTagName('section')[0].appendChild(div);
}
Run Code Online (Sandbox Code Playgroud)

我对此代码感到困惑.在每个循环开始时声明的div对象发生了什么?这是一个全新的,单独的对象每次,不知何故被封闭在我的块范围内?或者这个div对象是否被覆盖,每次通过循环,如果是这样,它如何维持它与i的连接是通过let给出的?

javascript ecmascript-6

5
推荐指数
1
解决办法
2595
查看次数

这些逻辑运算符如何工作?

我试图了解这条线的工作原理:

var dependencies = mod && mod.dependencies || [];
Run Code Online (Sandbox Code Playgroud)

这行代码存在于一个函数中,该函数将mod作为参数,mod是一个对象.我的理解是,首先它(顺便说一下,为了精确什么是"它"在这里?是"它"引擎?)将检查mod和mod.dependencies是否解析为true,如果是这样,|| 运算符将被短路并且mod.dependencies将返回.如果其中一个为false,则返回空数组.

但是,我不明白为什么它会同时寻找mod和mod.dependencies.没有mod可以存在mod.dependencies吗?为什么不只是寻找mod.dependencies?

javascript

4
推荐指数
1
解决办法
72
查看次数

阻止事件循环

我正在通过Nodeschool进行"功能性Javascript研讨会".其中一个练习的标题是"阻止事件循环",我很难理解它.通过以前的练习,我确保真正尝试理解解决方案,这样如果我不得不重做问题,我会理解如何解决它(而不是第一次破解它).但这个概念真的很挑战我.

修改样板中提供的递归重复函数,这样它就不会阻塞事件循环(即定时器和IO处理程序可以触发).这必然要求重复是异步的.

超时排队在100毫秒后触发,这将打印测试结果并退出该过程.repeat应该释放对事件循环的控制,以允许超时在所有操作完成之前中断.

尝试在超时发生之前执行尽可能多的操作!

样板

function repeat(operation, num) {
  // modify this so it can be interrupted
  if (num <= 0) return
  operation()
  return repeat(operation, --num)
}

module.exports = repeat
Run Code Online (Sandbox Code Playgroud)

function repeat(operation, num) {
        if (num <= 0) return

        operation()

        // release control every 10 or so
        // iterations.
        // 10 is arbitrary.
        if (num % 10 === 0) {
          setTimeout(function() {
            repeat(operation, --num)
          })
        } else {
          repeat(operation, --num)
        }
      }

module.exports = repeat
Run Code Online (Sandbox Code Playgroud)

我试图更好地理解setTimeout,我有点理解它是如何工作的.但我不明白问题本身的一些语言和概念:

修改样板中提供的递归重复函数, 这样它就不会阻塞事件循环(即定时器和IO处理程序可以触发).这必然要求重复是异步的.

我不明白使每10次重复异步的解决方案如何阻止重复阻止事件循环.我假设事件循环和事件队列是一样的东西?例如,点击进入事件队列,而javascript代码通过其代码同步运行,直到执行堆栈为空,然后查看队列.如何使每10次重复异步防止队列被阻止 …

javascript asynchronous functional-programming

3
推荐指数
1
解决办法
2364
查看次数