【问题标题】:module.exports and scope in javascriptjavascript中的module.exports和范围
【发布时间】:2022-07-12 00:05:58
【问题描述】:

示例 1. 我有一个文件 test.js

const lib = {
  foo: () => console.log(a)
};
lib.foo(); // can't access "a" before init
const a = 3;

示例 2. 我有两个文件:test1.js 和 test2.js

const lib = require('./test2');
lib.foo(); // 3

const lib = {
  foo: () => console.log(a) 
};

const a = 3;
module.exports = lib;
问题:为什么第二个例子是有效的?

【问题讨论】:

  • 因为你在const a之后调用lib.foo()

标签: javascript scope require


【解决方案1】:

出于同样的原因,这是有效的:

const lib = {
  foo: () => console.log(a)
};
const a = 3;
lib.foo(); 

a在export之前存在,所以调用时就存在。

【讨论】:

    【解决方案2】:

    在第一种情况下,您甚至在为“a”分配值之前就访问了“a”的值,

    在第二种情况下,它被声明然后被使用,所以第二种情况很好,第一种情况给你错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 2021-04-08
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多