如何向某人解释JavaScript关闭,知道它们所构成的概念(例如功能、变量等),但不了解关闭本身?

我已经在维基百科上看到了图表的例子,但不幸的是,它没有帮助。


当前回答

好吧,6岁的关闭粉丝,你想听到最简单的关闭例子吗?

让我们想象下一个情况:司机坐在车里,那辆车在飞机内,飞机在机场,司机的能力在车外,但在飞机内,即使飞机离开机场,也是一个关闭。

这就是我如何将我的飞机故事转换为代码。

飞机 = 函数(默认空港) { var lastAirportLeft = 默认空港; var car = { 司机: { startAccessPlaneInfo: 函数() { setInterval(函数() { console.log(“最后空港是“ + lastAirportLeft); }, 2000); } }; car.driver.startAccessPlaneInfo(); return { leaveTheAirport: 函数(airPortName) {

其他回答

函数在其定义的对象/函数范围内执行,该函数可以访问在其执行期间在对象/函数中定义的变量。

写字,写字,写字,写字:P

function sing(person) {

    var firstPart = "There was " + person + " who swallowed ";

    var fly = function() {
        var creature = "a fly";
        var result = "Perhaps she'll die";
        alert(firstPart + creature + "\n" + result);
    };

    var spider = function() {
        var creature = "a spider";
        var result = "that wiggled and jiggled and tickled inside her";
        alert(firstPart + creature + "\n" + result);
    };

    var bird = function() {
        var creature = "a bird";
        var result = "How absurd!";
        alert(firstPart + creature + "\n" + result);
    };

    var cat = function() {
        var creature = "a cat";
        var result = "Imagine That!";
        alert(firstPart + creature + "\n" + result);
    };

    fly();
    spider();
    bird();
    cat();
}

var person="an old lady";

sing(person);

指示

我没有时间去购物,所以函数需要知道我们在冰箱里有什么来做出决定。 每个成分都有不同的烹饪时间,我们希望所有的东西都被机器人同时加热。 我们需要提供函数与我们喜欢的数据,函数可以“说话”到冰箱,函数可以控制机器人。

function cookMeal() {  /*  STUFF INSIDE THE FUNCTION  */  }

function sing(person) {  /* STUFF INSIDE THE FUNCTION */  }

因此,这个功能可能与歌曲有关系,可能需要一些关于一个人的数据。

现在,在函数歌(),接近代码的结尾是线

var person="an old lady";

全球变量:人是一个全球变量,这意味着如果你将其值从“老太太”变成“年轻人”,这个人将继续是年轻人,直到你决定再次改变它,而代码中的任何其他功能可以看到它是一个年轻人。

sing(person);

这条线叫这个功能,就好像它叫一个狗。

关闭后,线路来了。

fly();
spider();
bird();
cat();

好吧,6岁的关闭粉丝,你想听到最简单的关闭例子吗?

让我们想象下一个情况:司机坐在车里,那辆车在飞机内,飞机在机场,司机的能力在车外,但在飞机内,即使飞机离开机场,也是一个关闭。

这就是我如何将我的飞机故事转换为代码。

飞机 = 函数(默认空港) { var lastAirportLeft = 默认空港; var car = { 司机: { startAccessPlaneInfo: 函数() { setInterval(函数() { console.log(“最后空港是“ + lastAirportLeft); }, 2000); } }; car.driver.startAccessPlaneInfo(); return { leaveTheAirport: 函数(airPortName) {

下面是我最能给出的Zen答案:

你会期望这个代码做什么?在你运行它之前,在评论中告诉我!我很好奇!

function foo() {
  var i = 1;
  return function() {
    console.log(i++);
  }
}

var bar = foo();
bar();
bar();
bar();

var baz = foo();
baz();
baz();
baz();

现在,在您的浏览器中打开控制台(Ctrl + Shift + I 或 F12,希望)并插入代码并点击 Enter。

如果这个代码打印了你所期望的(JavaScript的新闻 - 忽略“未定义”的结尾),那么你已经有无语的理解。

我把它这样做,因为一旦我意识到这个代码将Foo()的内部函数的例子放在字符串和字符串中,然后通过这些变量呼叫它们,没有别的东西让我感到惊讶。

但如果我错了,并且控制台的输出让你惊讶,让我知道!

此答案的版本图像: [ 解决]

只是忘记每件事的范围,并记住:当一个变量需要在某个地方,JavaScript不会破坏它。

例子1:

此分類上一篇

例子2:

此分類上一篇

例子3: