【问题标题】:node [file.js] produce different result with run browser, and nodejs .editornode [file.js] 使用运行浏览器和 nodejs .editor 产生不同的结果
【发布时间】:2018-09-15 12:10:42
【问题描述】:

我在 test.js 文件中有以下代码

   function foo(){
      console.log(this.bar);
    }

    var bar = "bar1";
    var obj = {bar: "bar2"};

    foo();
    foo.call(obj);

当我通过“node test.js”运行时,我得到了结果

undefined 
bar2

当我在 node .editor 中运行时,我得到了结果

bar1 
bar2

我认为第二种结果是对的,但第一种方法有什么问题?因为我总是做第一种方式。

它们之间有什么区别?

【问题讨论】:

标签: node.js command-line


【解决方案1】:

简单来说,当您使用node test.js 运行代码时,Node JS 将require('test.js') 运行它。但是当你使用 REPL 模式时,你输入的代码会直接在 REPL 中执行。

使用require 时,test.js 上的变量不会绑定为全局变量。所以不能像this.bar一样访问

【讨论】:

    【解决方案2】:

    我认为在使用'node test.js'时,node会为test.js代码创建一个包装器,所以没有全局变量bar。

    在.edit方式中,在全局范围内定义了一个变量bar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-03
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多