gpt4 book ai didi

javascript - 尝试访问函数构造函数内部的变量时出现引用错误

转载 作者:行者123 更新时间:2023-12-01 15:20:52 28 4
gpt4 key购买 nike

阅读 mdn 文档,了解 Function 之间的区别构造函数和 function宣言。此处指定的示例适用于浏览器以及 node.js repl,但在通过文件尝试时,node.js 进程因此错误而崩溃ReferenceError: x is not defined这是程序

var x = "bar";

function test() {
var x = "baz";
return new Function("return x;");
}

var t = test();
console.log(t());

从带有 node.js 的文件执行时,此示例无法按预期工作的可能原因是什么?

最佳答案

在 Node REPL 中,您输入代码的词法位置是顶层,相当于在 <script> 的顶部输入内容。浏览器中的标签。
var 定义的变量在顶层被分配给全局对象。所以,在 Node 的 REPL 和浏览器中,你的

var x = "bar";
结果 x分配给全局对象。
但是,相反,当您从文件运行代码时,例如 node bar.js ,运行的代码在模块内部 - 它不在顶层,因此在此类脚本的顶层声明的变量不会分配给全局对象。
创建的函数是全局的,在顶层,所以它只能在词法上“看到”在顶层定义的变量。所以,在Node中将代码作为文件运行时,由于运行的代码的作用域不是顶层,所以创建的函数看不到 x任何地方,所以一个 ReferenceError 是结果。

关于javascript - 尝试访问函数构造函数内部的变量时出现引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63662783/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com