Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套函数如何在以后不声明的情况下访问Javascript中的变量?_Javascript - Fatal编程技术网

嵌套函数如何在以后不声明的情况下访问Javascript中的变量?

嵌套函数如何在以后不声明的情况下访问Javascript中的变量?,javascript,Javascript,在下面的代码中,传递给“DPerson”函数的参数如何在对该函数的调用成功结束后继续存在。如果这与堆栈和堆的工作方式有关,那么有人能就这个例子更详细地解释一下吗 我的理解是,需要在至少一个执行上下文中创建“var name=“someValue””属性,以便在控制台日志中打印某些内容。但显然我的理解是错误的 职能部门人员(姓名、年龄、职务){ var o=新对象(); o、 sayName=函数(){ console.log(名称); } 返回o; } var dperson1=新的DPers

在下面的代码中,传递给“DPerson”函数的参数如何在对该函数的调用成功结束后继续存在。如果这与堆栈和堆的工作方式有关,那么有人能就这个例子更详细地解释一下吗

我的理解是,需要在至少一个执行上下文中创建“var name=“someValue””属性,以便在控制台日志中打印某些内容。但显然我的理解是错误的

职能部门人员(姓名、年龄、职务){
var o=新对象();
o、 sayName=函数(){
console.log(名称);
}
返回o;
}
var dperson1=新的DPerson(“Ahu”,55,“野生动物专家”);

dperson1.sayName()您在这里看到的是一个
结束
。当您在另一个函数中定义一个函数时,子函数可以访问父函数的词法环境,即使在父函数返回后,子函数也可以访问父函数的词法环境<当您为
DPerson
创建参数时,会在父项中定义code>name
。子函数,
o.sayName
可以访问它,并在父函数返回后保留对它的访问权


有关更多信息,请参见,javascript中的Yes变量即使在函数结束后仍然有效。函数在javascript中只是一个很短的作用域。

您正在寻找的概念称为:)在这个特定的代码中,只有
名称
将“存活”-而不是
年龄
工作
。它确实存在的原因是返回对象的
sayName
方法对
name
变量有一个“闭包”。关于闭包在Javascript中的工作原理,网上可能有成千上万种很好的解释,如果您对此感到困惑,我建议您阅读一些。