繁体   English   中英

在NodeJS中var export = module.exports = {}

[英]var exports = module.exports = {} in NodeJS

我从以前的文章中可以看到,导出对象位于global对象上。 我遇到了使我感到困惑的这段代码:

let blue = 'blue'
let red = 'red'

var exports = module.exports = {
    red,
    blue
};

此代码设置module.exports一个变量称为exports然后把它设置为它获取出口的对象。

但是,我对这种语法感到困惑:

范例1:

var exports = module.exports = {}

究竟如何运作? 因为通常在JS中,您不能两次修改变量。 例如,这给出了一个错误:

范例2:

let foo = 5 = 4;

例2中的代码如何提供示例1中的代码没有错误?

let foo = 5 = 4;

导致其从右到左解析:

let foo = (5 = 4);

而且5不是变量,因此您无法为其分配内容。 但是,它可以与标识符一起使用:

let bar;
let foo = bar = 5;

您对生产线正在做什么的解释不正确。

此代码将module.exports设置为一个名为export的变量,然后将其设置为要导出的对象。

实际情况是,将值{ red, blue }分配给module.exports ,然后将相同的值( { red, blue } )分配给exports

在JavaScript和其他具有类似语法的语言(C,C ++,C#,Java)中, someAssignableThing = someValue被视为一个表达式 ,您可以将a = b用作其他表达式的子部分,并根据需要将a = b多个链接在一起。

作为表达式, someAssignableThing = someValue等于“将someValue分配给someAssignableThing并求值为someValue ”。

所以声明:

a = b = c = d = e = 5;

会将值5分配给abcde

=的左边有不能分配值的语法是一种语法错误,这就是为什么在第二种情况下会出错(不能将值分配给5 )的原因。

暂无
暂无

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

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