繁体   English   中英

在javascript中解释var a = bc = {}?

[英]interpreting var a=b.c={} in javascript?

我正在遍历node.js ,遇到了类似var exports = module.exports = {};东西var exports = module.exports = {}; 在模块部分。

这与var a=bc={}非常相似,我如何形象地看待它?

这里发生了什么事?

据我了解, ab都被分配为对象,它们都描述相同的事物,还是它们都引用相同的事物?

exports.sayHelloInEnglish = function() {
  return "HELLO";
};

exports.sayHelloInSpanish = function() {
  return "Hola";
};

如同

module.exports = {
  sayHelloInEnglish: function() {
    return "HELLO";
  },

  sayHelloInSpanish: function() {
    return "Hola";
  }
};

有人可以用简单得多的方式向我解释吗?

var exports = module.exports = {}; ,我如何可视化它?

首先,请确保了解其解析方式,语法包含哪些组件。 基本上是两个嵌套的任务1

var exports = (module.exports = {});

您可以将其翻译成等效的

var _temp = {};
module.exports = _temp;
var exports = _temp;

是的,它们都将包含相同的对象。

1:在语法上,它是变量声明的初始化程序中的赋值表达式,但是为了便于理解,我们忽略了var

在此处输入图片说明

根据语句的分析树,这是按顺序发生的事情。

  1. 对象b将添加一个名为c的成员,或者如果它已经存在,则将对其进行访问。
  2. bc设置为文字{}
  3. 将a的值设置为bc的值。在步骤3中,这意味着两者都引用相同的内容。

例如,您可以尝试此操作。

 var a = [1,5]
 var b = a
 b[1] = 2
 console.log(a)
 console.log(b)

两者都将具有更新的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM