2017-12-02 1 views
0

이전 게시물과 기사에서 얻은 것은 내보내기 개체가 global 개체에 있다는 것입니다.NodeJS의 var exports = module.exports = {}

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

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

이 코드는 다음 수출됩니다 개체로 설정됩니다 exports라는 변수에 module.exports을 설정합니다 나는 나를 혼동이 코드를 가로 질러왔다.

나는이 구문에 의해 그러나 혼란 스러워요 :

예 1 :이 작업을 정확하게 수행 방법

var exports = module.exports = {} 

? 일반적으로 JS에서는 변수를 두 번 사용할 수 없습니다.

예 2 : 예제의 코드는 수행이 동안

let foo = 5 = 4; 

방법 예 1의 코드가 오류를 포기하지 않습니다 예를 들어,이 오류를 준다?

let foo = (5 = 4); 

그리고 5 변수없는, 그래서 당신은 그것에 물건을 할당하지 못할 : 그 원인

+0

그것은'exports = (module.exports = {});'입니다.객체 리터럴에서 생성 된 객체를 두 대상에 할당합니다. – Bergi

답변

2
let foo = 5 = 4; 

는 오른쪽에서 왼쪽으로 분석. 그러나 식별자와 함께 작동합니다 :

let bar; 
let foo = bar = 5; 
1

라인이하는 일에 대한 귀하의 해석이 올바르지 않습니다. 실제로 일어나는 어떤

This code sets module.exports to a variable called exports which then gets set to an object which gets exported.

는 값 { red, blue }module.exports가 할당되고 있으며, 그 동일한 값 (이 { red, blue }) exports 할당되고 있다는 점이다.

자바 스크립트와 유사한 구문을 사용하여 다른 언어

(C, C++, C#을, 자바) someAssignableThing = someValue표현로 처리됩니다, 당신은 당신만큼 서로 다른 표정과 체인의 하위 부분으로 a = b을 사용할 수 있습니다 필요.

someAssignableThing = someValue은 "someValue에서 someAssignableThing으로 지정하고 값은 someValue"으로 계산합니다.

그래서 문 :

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

이 값 5a에, b, c, de을 할당합니다.

= 왼쪽에 값을 할당 할 수없는 구문 오류가 있습니다. 따라서 두 번째 경우에 오류가 발생합니다 (5에 값을 할당 할 수 없음).