-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[doc] Closure 설명 보충 #108
[doc] Closure 설명 보충 #108
Conversation
- private 변수 구현 예시 추가
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다~ 👏
docs/js/closure.md
Outdated
@@ -101,6 +101,33 @@ add(); // 2 | |||
|
|||
이처럼 함수의 실행이 끝나고 나서도 함수 안의 변수를 참조할 수 있는게 바로 클로져입니다. 이러한 패턴을 응용하면 자바스크립트에 없는 private 변수나 함수형 프로그래밍을 할 수 있습니다. | |||
|
|||
## private 변수 | |||
일반적으로 프로그래밍에서 외부에서 사용하지 않거나 접근하면 안 되는 변수와 함수는 `private`로 선언하여 사용합니다. 자바스크립트에서는 private 변수를 나타내는 별도의 문법이 없지만 클로져를 활용하여 구현할 수 있습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
기존의 자바스크립트에는 private
이 없지만, Private methods and fields - tc39 proposal, Private class features - MDN 내용이 있으니 부가 정보로 언급하는 게 좋을지 모르겠네요 🤔
참고해주셔요 😅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
커링 외에 클로져의 활용 예로는 있으면 좋겠고 (+@ #109 )
es6 챕터의 class에서 관련 내용이 생긴다면 해당 본문 링크 혹은 위에 의견 주신 mdn의 class 링크를 tip 이나 details 로 제공 또는 언급하면 어떨까 의견 드립니다.
docs/js/closure.md
Outdated
일반적으로 프로그래밍에서 외부에서 사용하지 않거나 접근하면 안 되는 변수와 함수는 `private`로 선언하여 사용합니다. 자바스크립트에서는 private 변수를 나타내는 별도의 문법이 없지만 클로져를 활용하여 구현할 수 있습니다. | ||
```js | ||
function Account() { | ||
let _money = 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🙋 변수 선언 키워드 사용 시, let
, const
대신 일관성 있게 var
로 사용하는 건 어떨까요?
저도 항상 const > let
순서로 사용하지만, 순수 자바스크립트 튜토리얼이나 예시에서는 var
를 사용하고 있어요.
특정 글을 본 것은 아닌데요. 아무래도 let, const
는 es6부터 도입되었으니 변수의 값 불변성에 초점이 맞춰진 내용이 아니라면 모든 브라우저 종류, 버전 상관없이 호환되는 var
를 사용하는 것으로 이해하고 있어요. (암묵적인 룰? 🤔)
필수는 아니니 참고해주셔요 😉
docs/js/closure.md
Outdated
일반적으로 프로그래밍에서 외부에서 사용하지 않거나 접근하면 안 되는 변수와 함수는 `private`로 선언하여 사용합니다. 자바스크립트에서는 private 변수를 나타내는 별도의 문법이 없지만 클로져를 활용하여 구현할 수 있습니다. | ||
```js | ||
function Account() { | ||
let _money = 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
세상 깨알이지만, 코드 라인 끝날 때마다 일관성 있게 ;
세미콜론이 붙었으면 좋겠네요 😁
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yahma25 깨알 리뷰 좋습니다 ㅋㅋ 😄 👍 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
최근에 private 변수를 #인가 $인가 이상한 기호로 정의하는 문법이 생긴 걸로 아는데 그런 부분도 있고.. 가끔 private한 변수다 라는 것을 _
접두사로 붙여서 표시하는 관례도 있는 걸로 아는데 현재 시점에서는 이후 문법의 포용을 위해 _
를 떼는 건 어떨까요? 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@padosum 연정님 고생 많으셨어요. 글이랑 코드 넘 좋은데요? 😄 몇 가지 피드백 남겼습니다 👍
docs/js/closure.md
Outdated
일반적으로 프로그래밍에서 외부에서 사용하지 않거나 접근하면 안 되는 변수와 함수는 `private`로 선언하여 사용합니다. 자바스크립트에서는 private 변수를 나타내는 별도의 문법이 없지만 클로져를 활용하여 구현할 수 있습니다. | ||
```js | ||
function Account() { | ||
let _money = 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
최근에 private 변수를 #인가 $인가 이상한 기호로 정의하는 문법이 생긴 걸로 아는데 그런 부분도 있고.. 가끔 private한 변수다 라는 것을 _
접두사로 붙여서 표시하는 관례도 있는 걸로 아는데 현재 시점에서는 이후 문법의 포용을 위해 _
를 떼는 건 어떨까요? 😄
docs/js/closure.md
Outdated
} | ||
|
||
const fund = Account() | ||
fund.deposit(100) // +100 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fund.deposit(100) // +100 | |
fund.deposit(100) // 100 |
docs/js/closure.md
Outdated
|
||
const fund = Account() | ||
fund.deposit(100) // +100 | ||
fund.deposit(100) // +100 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fund.deposit(100) // +100 | |
fund.deposit(100) // 200 |
docs/js/closure.md
Outdated
const fund = Account() | ||
fund.deposit(100) // +100 | ||
fund.deposit(100) // +100 | ||
console.log(fund.getMoney()); // 200 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
console.log(fund.getMoney()); // 200 | |
fund.getMoney(); // 200 |
docs/js/closure.md
Outdated
fund.deposit(100) // +100 | ||
console.log(fund.getMoney()); // 200 | ||
fund._money = 100000 // private 변수로 변경되지 않는다. | ||
console.log(fund.getMoney()); // 200 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
console.log(fund.getMoney()); // 200 | |
fund.getMoney(); // 200 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요렇게 하는 게 좀 더 일반적인 것 같아요 😄 다른 문서의 코드들과의 통일감도 있고..! 😄
docs/js/closure.md
Outdated
fund._money = 100000 // private 변수로 변경되지 않는다. | ||
console.log(fund.getMoney()); // 200 | ||
``` | ||
위 코드에 나온 `Account` 함수 내부의 `_money` 변수는 함수 내에서 제공한 `deposit`, `withdraw`, `getMoney`를 사용하는 것 외에 접근하는 방법이 없습니다. 이렇게 클로져를 활용하면 외부에서 변수에 직접 접근하는 것을 제한하는 private 변수를 구현할 수 있습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 예시랑 설명 넘 좋네요 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
연정님 수고 많으셨습니다.
docs/js/closure.md
Outdated
## private 변수 | ||
일반적으로 프로그래밍에서 외부에서 사용하지 않거나 접근하면 안 되는 변수와 함수는 `private`로 선언하여 사용합니다. 자바스크립트에서는 private 변수를 나타내는 별도의 문법이 없지만 클로져를 활용하여 구현할 수 있습니다. | ||
```js | ||
function Account() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
일반함수 이름은 camelCase를 따라서 account로 적어주는게 어떨까요
function Account() { | |
function account() { |
- 예시를 IFE로 작성하셔도 좋을 것 같네요
https://developer.mozilla.org/en-US/docs/Glossary/IIFE
- 변수선언 키워드 var로 변경 - 세미콜론 추가 - 언더스코어 접두사 삭제 - 예시 코드 IIFE로 수정, 주석 수정
- 주석수정
- tip 추가
- private 변수를 만드는 문법이 없다는 내용 삭제
요약
JavaScript Fundamentals > Closure 문서에 다음 내용을 보충하였습니다.