Javascript 函数内部的局部变量在函数执行后在函数外部访问。这是怎么发生的?

Javascript 函数内部的局部变量在函数执行后在函数外部访问。这是怎么发生的?,javascript,javascript-objects,Javascript,Javascript Objects,这段代码通过随机组合来自3个字符串数组的单词来生成一个句子 var arrAimals=[“狗”、“老鼠”、“猫”]; var arrNames=[“艾米”、“乔治”、“玛丽”]; var arrAction=[“隐藏”、“查找”、“窃取”]; var num=0; var hero=generateHero(); var故事=[]; var createStory=函数(){ var animal=generateAnimal(); stories.push(函数(){ var action

这段代码通过随机组合来自3个字符串数组的单词来生成一个句子

var arrAimals=[“狗”、“老鼠”、“猫”];
var arrNames=[“艾米”、“乔治”、“玛丽”];
var arrAction=[“隐藏”、“查找”、“窃取”];
var num=0;
var hero=generateHero();
var故事=[];
var createStory=函数(){
var animal=generateAnimal();
stories.push(函数(){
var action=generateAction();
console.log(英雄+动作+动物);
});
}
函数generateHero(){
num=Math.floor(Math.random()*3);//0-2之间的随机数
var hero=arrNames[num];
回归英雄;
}
函数generateAnimal(){
num=Math.floor(Math.random()*3);//0-2之间的随机数
变量动物=数组动物[num];
返回动物;
}
函数生成(){
num=Math.floor(Math.random()*3);//0-2之间的随机数
var action=arrAction[num];
返回动作;
}
createStory();
故事[0]();
故事[0]();
故事[0]();
故事[0]();

故事[0]()欢迎来到SO。请阅读@Ryan发布的链接。这回答了你的问题。这些问题已经被回答了数百万次,所以,请使用谷歌搜索。谢谢@Ryan的链接。我现在才明白,这叫做闭包。你可以观看这段视频,了解它是如何在幕后工作的。解释得非常好。