当前位置: 首页 > 面试题库 >

REPL和脚本之间的“此”不同

傅长恨
2023-03-14
问题内容

阅读mozilla文档后,我发现了这一点:

在全局执行上下文中(在任何函数之外),这指的是全局对象,无论是否处于严格模式下。

在玩了一点示波器之后,我发现在node.js REPL中…

> this === global
true

但是当我用同一行创建脚本时…

$ cat > script.js
console.log(this === global)
$ node script.js
false

是否有一个原因?还是一个错误?


问题答案:

节点REPL是全局的。文件中的代码位于“模块”中,它实际上只是一个函数。

您的代码文件变成了如下所示的简化示例:

var ctx = {};
(function(exports) {
    // your code
    console.log(this === global);
}).call(ctx, ctx);

请注意,它是使用来执行的.call(),并且该this值设置为预定义的对象。



 类似资料:
  • 我是clojure的新手,尝试通过解https://www.4clojure.com上的问题来学习它。任务是实现flatten函数。这是我的实现: 当我将其作为lein run运行时,我会得到以下异常: 我怀疑它与名称空间有关,但我不知道如何解决它。

  • 问题内容: 我有一个bash脚本( ScreamDaemon.sh ),其中添加了一个示例尚未运行的检查。 通常情况下,如果有脚本运行没有另一个副本, 的ps aux | grep ScreamDaemon.sh | wc -l应该返回 2 (它应该找到自己和 grep ScreamDaemon.sh ),但是它返回 3 。 因此,我尝试分析会发生什么,并在添加一些回声后看到: 我已经在脚本中添加

  • 下面有4个bash片段。我用<代码>打电话给他们。/script.sh a b c 我不知道 $ 和 * 之间的确切区别是什么,我认为“$ @”和应该是一样的,但它们不是。为什么?

  • 新手Clojure和leiningen问题: 鉴于下面我的项目中的代码片段,这可以从lein repl中获得: 生成预期的“命令:某物…正在运行…完成”,但无法从命令行执行: 生成"命令:某物...错误:未作为命令解析" 为什么我怎么修理它? 复制: 然后编辑生成的项目文件,添加以定义主功能,并编辑生成的src/eg/core。clj文件,并将其粘贴到: core.clj 然后 作品(即打印的东西

  • 我有一个谷歌表,我想从我们的服务器更新它的数据。目前我正在使用谷歌工作表脚本编辑器。 但是我开始意识到还有另一种方法可以更新我的谷歌表格。那就是使用谷歌表单apihttps://developers.google.com/sheets/api/samples/writinghttps://developers.google.com/sheets/api/reference/rest/https:/

  • 问题内容: 谁能解释jenkins中的执行groovy脚本和执行系统groovy脚本之间的区别?以及如何使用执行系统常规脚本将脚本调用为从属脚本。 问题答案: 要在从机上执行groovy脚本,您应该使用groovy插件 引用 普通的“ Groovy脚本”在运行构建的从属服务器上的派生JVM中运行。它与运行“ groovy”命令并传入脚本基本相同。 问题的第一部分在同一页面中回答 系统常规脚本OTO