나는 sails.js를 사용합니다. 바우트의 범위 var 및 수명을 돛 contoller로 선언했는지 궁금합니다. 범위 var 및 수명을 돛 컨트롤러 컨트롤러 nodejs
var user = {};
module.exports = {
index: function (req, res) {
user.connected = false;
return res.view({
user: user
});
},
member: function (req, res) {
user.connected = true;
return res.view('home/index', {
user: user
});
}
};
는 처음에 나는 단지
member
기능에
user
을 설정하려고하지만 난/회원 웹 페이지를 방문하면, 사용자는
user.connected=true
로 초기화하고 있었고, 난이/인덱스 페이지를 방문했을 때 그것은 여전히 연결되었다. 그래서
user.connected=false
을
index
함수에 추가했는데 예상대로 작동합니다.
그러나 나는 전혀 이해하지 못합니다. 내가 알고있는 바에 따르면 user
은 HomeController.js
스크립트에 대한 로컬 변수이므로 파일을로드 할 때마다 파기해야하며 각 호출시 {}
으로 재설정해야합니다. 내가 질문을 썼다
사실, 내가 뭔가에 대해 생각 ...
을 나는 HomeController.js
에서 수행되지 않은 module.exports
, 기능 지수와 회원이 메모리와 전화로로드를 사용하기 때문에 그러나 module.exports
전역 객체에 있고 user
이 객체이기 때문에 "포인터"가 참조하며 사본은 아니지만 각 함수 안에 참조가 있으므로 참조를 사용하는 곳마다 변경됩니다 . 이것은 모듈 내부의 글로벌 객체와 같습니다.
맞습니까? 내가 뭐 놓친 거 없니? 그것에 대해 더 자세히 설명해 주시겠습니까? 감사.
호 사실,이 코드는 실제로 임시라는 것을 알고 있습니다. 디자이너는 데이터베이스에 신경 쓰지 않고도 몇 가지 변수가 있습니다! 보기를 만드는 것은 단지 가짜 데이터 일 뿐이며 실제 데이터는 뒤를 따릅니다. 가짜 데이터를 만들었을 때 사용자 var의 수명과 범위에 대해 궁금해했습니다. 예상 한대로 작동하지 않았기 때문입니다. – Vadorequest