小编jse*_*tes的帖子

JavaScript示例问题:词法范围/闭包 - Eloquent Javascript

所以我是编程的新手,我正在尝试用Eloquent Javascript这本书来学习JS.

到目前为止一直很好,直到我用以下代码到达一个例子

function makeAddFunction(amount) {
  function add(number) {
    return number + amount;
  }
  return add;
}

var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));
Run Code Online (Sandbox Code Playgroud)

注意:show就像alert,只显示教程集成的JS控制台屏幕上的变量.

作者说这是一个展示词汇范围如何允许合成函数的例子. 这里的章节

我不明白的是如何addTwoaddFive,这理应是变量,可以将参数传递给函数makeAddFunctionadd,更具体地说,请问该函数add知道变量要发送的参数是参数number.

谢谢你的帮助!

javascript lexical-scope

15
推荐指数
3
解决办法
1463
查看次数

为什么这不是无限循环?

我正在读这个例子,我坚持理解一行.我需要了解一切,所以我无法继续前进.

该函数应该隐藏对象内的所有元素.它应该工作.但对我来说,for循环看起来像是无限的.为什么不呢?

getChild: function (i) {
    return this.children[i];
},

hide: function () {
    for (var node, i = 0; node = this.getChild(i); i++) {
        node.hide();
    }

    this.element.hide(0);
},
Run Code Online (Sandbox Code Playgroud)

从我看到的,该函数使用getChild(0)获取对象的第一个元素,然后再次在该0维对象上调用hide.然后它重置计数器(i)并获取0维对象的第一个元素(它是相同的0-dim对象)并再次调用该函数.

我知道我错了,但这就是我所看到的.请告诉我光明!谢谢

javascript

2
推荐指数
1
解决办法
161
查看次数

标签 统计

javascript ×2

lexical-scope ×1