관리 메뉴

λͺ©λ‘πŸ“š Language & CS knowledge (167)

Daehyunii's Dev-blog

27μž₯ λ°°μ—΄

27.1 λ°°μ—΄μ΄λž€? 배열은 μ—¬λŸ¬ 개의 값을 순차적으둜 λ‚˜μ—΄ν•œ μžλ£Œκ΅¬μ‘°λ‹€. 배열이 κ°€μ§€κ³  μžˆλŠ” 값을 μš”μ†ŒλΌκ³  λΆ€λ₯Έλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  값은 λ°°μ—΄μ˜ μš”μ†Œκ°€ 될 수 μžˆλ‹€. λ°°μ—΄μ˜ μš”μ†ŒλŠ” λ°°μ—΄μ—μ„œ μžμ‹ μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 0μ΄μƒμ˜ μ •μˆ˜μΈ 인덱슀λ₯Ό κ°–λŠ”λ‹€. μΈλ±μŠ€λŠ” λ°°μ—΄μ˜ μš”μ†Œμ— μ ‘κ·Όν•  λ•Œ μ‚¬μš©ν•œλ‹€. μΈλ±μŠ€λŠ” 0λΆ€ν„° μ‹œμž‘ν•œλ‹€. μš”μ†Œμ— μ ‘κ·Όν•  λ•ŒλŠ” λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•( [ ] )을 μ‚¬μš©ν•œλ‹€. λŒ€κ΄„ν˜Έ 내에 μ ‘κ·Όν•˜κ³  싢은 μš”μ†Œμ˜ 인덱슀λ₯Ό μ§€μ •ν•œλ‹€. 배열은 μš”μ†Œμ˜ 개수, 즉 λ°°μ—΄μ˜ 길이λ₯Ό λ‚˜νƒ€λ‚΄λŠ” length ν”„λ‘œνΌν‹°λ₯Ό κ°–λŠ”λ‹€. 배열은 μΈλ±μŠ€μ™€ length ν”„λ‘œνΌν‹°λ₯Ό κ°–κΈ° λ•Œλ¬Έμ— for 문을 톡해 순차적으둜 μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 배열은 객체 νƒ€μž…μ˜ 값이닀. const arr = ['apple','bana..

26μž₯ ES6 ν•¨μˆ˜μ˜ μΆ”κ°€ κΈ°λŠ₯

26.1 ν•¨μˆ˜μ˜ ꡬ뢄 ES6 μ΄μ „κΉŒμ§€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν•¨μˆ˜λŠ” 별닀λ₯Έ ꡬ뢄 없이 λ‹€μ–‘ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©λ˜μ—ˆλ‹€. 즉, μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν•¨μˆ˜λŠ” 일반적인 ν•¨μˆ˜λ‘œμ„œ ν˜ΈμΆœν•  μˆ˜λ„ 있고, new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜μ—¬ μƒμ„±μž ν•¨μˆ˜λ‘œμ„œ ν˜ΈμΆœν•  μˆ˜λ„ 있으며, 객체에 λ°”μΈλ”©λ˜μ–΄ λ©”μ„œλ“œλ‘œμ„œ ν˜ΈμΆœν• μˆ˜λ„ μžˆλ‹€. var foo = function (){ return 1; } // 일반 ν•¨μˆ˜λ‘œμ„œ 호좜 foo(); // 1 λ°˜ν™˜ // μƒμ„±μž ν•¨μˆ˜λ‘œμ„œ 호좜 new foo(); // foo {} 생성 // λ©”μ„œλ“œλ‘œμ„œ 호좜 var obj = { foo : foo }; obj.foo(); // 1 λ°˜ν™˜ 이처럼 ES6 μ΄μ „μ˜ ν•¨μˆ˜λŠ” μ‚¬μš© λͺ©μ μ— 따라 λͺ…ν™•νžˆ κ΅¬λΆ„λ˜μ§€ μ•ŠλŠ”λ‹€. λ‹€μ‹œ 말해, ES6 μ΄μ „μ˜ λͺ¨λ“  ν•¨μˆ˜λŠ” callable μ΄λ©΄μ„œ const..

25μž₯ 클래슀

25.2 클래슀 μ •μ˜ ν΄λž˜μŠ€λŠ” class ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•œλ‹€. 클래슀 이름은 μƒμ„±μž ν•¨μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 파슀칼 μΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ”κ²ƒμ΄ μΌλ°˜μ μ΄λ‹€. // 클래슀 μ„ μ–Έλ¬Έ class Person {} ν΄λž˜μŠ€λŠ” ν•¨μˆ˜κ³ , λ”°λΌμ„œ ν΄λž˜μŠ€λŠ” κ°’μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλŠ” 일급 객체닀. 클래슀 λͺΈμ²΄μ—λŠ” 0개 μ΄μƒμ˜ λ©”μ„œλ“œλ§Œ μ •μ˜ν•  수 μžˆλ‹€. 클래슀 λͺΈμ²΄μ—μ„œ μ •μ˜ν•  수 μžˆλŠ” λ©”μ„œλ“œλŠ” constructor, ν”„λ‘œν† νƒ€μž… λ©”μ„œλ“œ, 정적 λ©”μ„œλ“œμ˜ μ„Έ κ°€μ§€κ°€ μžˆλ‹€. // 클래슀 μ„ μ–Έλ¬Έ class Person { // μƒμ„±μž constructor(name){ this.name = name; // ν΄λž˜μŠ€μ— μ˜ν•΄ λ―Έλž˜μ— 생성될 객체의 ν”„λ‘œνΌν‹° } // ν”„λ‘œν† νƒ€μž… λ©”μ„œλ“œ sayHi(){ console.log(`Hi my name is ${..

24μž₯ ν΄λ‘œμ €

ν΄λ‘œμ €μ˜ 핡심 ν‚€μ›Œλ“œλŠ” 'ν•¨μˆ˜κ°€ μ„ μ–Έλœ λ ‰μ‹œμ»¬ ν™˜κ²½'이닀. 24.1 λ ‰μ‹œμ»¬ μŠ€μ½”ν”„ μžλ°”μŠ€ν¬λ₯΄λ¦½νŠΈ 엔진은 ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ ν˜ΈμΆœν–ˆλŠ”μ§€κ°€ μ•„λ‹ˆλΌ ν•¨μˆ˜λ₯Ό 어디에 μ •μ˜ν–ˆλŠ”μ§€μ— 따라 μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€. 이λ₯Ό λ ‰μ‹œμ»¬ μŠ€μ½”ν”„(정적 μŠ€μ½”ν”„)라 ν•œλ‹€. (κ΄€λ ¨λœ λ‚΄μš©μ€ 13μž₯ μŠ€μ½”ν”„ 정리λ₯Ό 보면 μžμ„Έν•˜κ²Œ μ•Œ 수 μžˆλ‹€.) 2022.07.03 - [μ–Έμ–΄ 곡뢀 및 정리/μžλ°”μŠ€ν¬λ¦½νŠΈ[λͺ¨λ˜μžλ°”μŠ€ν¬λ¦½νŠΈ]] - 13μž₯ μŠ€μ½”ν”„ 13μž₯ μŠ€μ½”ν”„ 13.1 μŠ€μ½”ν”„λž€? μŠ€μ½”ν”„λž€ μ‹λ³„μž μžμ‹ μ΄ μ„ μ–Έλœ μœ„μΉ˜μ— μ˜ν•΄ λ‹€λ₯Έ μ½”λ“œκ°€ μ‹λ³„μž μžμ‹ μ„ μ°Έμ‘°ν•  수 μžˆλŠ” 유효 λ²”μœ„λ₯Ό λ§ν•œλ‹€. 즉, μŠ€μ½”ν”„λŠ” μ‹λ³„μžκ°€ μœ νš¨ν•œ λ²”μœ„λ₯Ό λ§ν•œλ‹€. μ•žμ„œ κ²½ν—˜ν•œ 바와 κ°™ pinetree93.tistory.com 그리고 κ²°κ΅­ μŠ€μ½”ν”„μ˜ μ‹€μ²΄λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ λ ‰μ‹œμ»¬ ν™˜κ²½μ΄λ‹€...

23μž₯ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리λ₯Ό λ‹΄κ³  μžˆλŠ” 핡심 κ°œλ…μ΄λ‹€. 이 κ°œλ…μ„ λͺ…ν™•ν•˜κ²Œ μ΄ν•΄ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μŠ€μ½”ν”„ 기반으둜 μ‹λ³„μžμ™€ μ‹λ³„μžμ— λ°”μΈλ”©λœ 값을 κ΄€λ¦¬ν•˜λŠ” 방식과 ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜λŠ” 이유, ν΄λ‘œμ €μ˜ λ™μž‘ 방식등을 이해할 수 μžˆλ‹€. 23.1 μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž… μš°μ„  μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž…μ„ μ•Œ ν•„μš”κ°€ μžˆλ‹€. ECMAscirpt 사양은 μ†ŒμŠ€μ½”λ“œ 즉, μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό 4κ°€μ§€ νƒ€μž…μœΌλ‘œ κ΅¬λΆ„ν•œλ‹€. 4κ°€μ§€ νƒ€μž…μ˜ μ†ŒμŠ€μ½”λ“œλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό 각각 μƒμ„±ν•œλ‹€. μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž… μ„€λͺ… μ „μ—­ μ½”λ“œ 전역에 μ‘΄μž¬ν•˜λŠ” μ†ŒμŠ€μ½”λ“œ (μ „μ—­μ˜ ν•¨μˆ˜, 클래수 λ“±μ˜ λ‚΄λΆ€ μ½”λ“œλŠ” μ œμ™Έ) ν•¨μˆ˜ μ½”λ“œ ν•¨μˆ˜ 내뢀에 μ‘΄μž¬ν•˜λŠ” μ†ŒμŠ€μ½”λ“œ (μ€‘μ²©ν•¨μˆ˜,클래슀 λ“±μ˜ λ‚΄λΆ€ μ½”λ“œλŠ” μ œμ™Έ) eval μ½”λ“œ 빌트인 μ „μ—­ ν•¨μˆ˜ ..

22μž₯ this

22.1 this ν‚€μ›Œλ“œ 객체의 λ™μž‘μ„ λ‚˜νƒ€λ‚΄λŠ” λ©”μ„œλ“œλŠ” μžμ‹ μ΄ μ†ν•œ 객체의 μƒνƒœ, 즉 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜κ³  λ³€κ²½ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. μ΄λ•Œ λ©”μ„œλ“œκ°€ μžμ‹ μ΄ μ†ν•œ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜λ €λ©΄ λ¨Όμ € μžμ‹ μ΄ μ†ν•œ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. 객체 λ¦¬ν„°λŸ΄λ‘œ 객체λ₯Ό μƒμ„±ν•˜λŠ” κ²½μš°μ—λŠ” λ©”μ„œλ“œ λ‚΄λΆ€μ—μ„œ λ©”μ„œλ“œ μžμ‹ μ΄ μ†ν•œ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ‹λ³„μžλ₯Ό μž¬κ·€μ μœΌλ‘œ μ°Έμ‘°ν•  수 μžˆλ‹€. const circle = { radius : 5, getDiameter(){ return 2 * circle.radius // μž¬κ·€μ μœΌλ‘œ μ°Έμ‘° } }; console.log(circle.getDiameter()); // 10 ν•˜μ§€λ§Œ, μƒμ„±μž ν•¨μˆ˜μ˜ 경우 μƒμ„±μž ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλŠ” ν”„λ‘œνΌν‹° λ˜λŠ” λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜κΈ° μœ„ν•΄ μžμ‹ μ΄ 생성..

21μž₯ 빌트인 객체

21.1 μžλ°”μŠ€ν¬λ¦½νŠΈ 객체의 λΆ„λ₯˜ μžλ°”μŠ€ν¬λ¦½νŠΈ κ°μ²΄λŠ” λ‹€μŒκ³Ό 같이 크게 3개의 객체둜 λΆ„λ₯˜ν•  수 μžˆλ‹€. - ν‘œμ€€ 빌트인 객체 : ECMAscript 사양에 μ •μ˜λœ 객체λ₯Ό λ§ν•˜λ©° μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ ν™˜κ²½κ³Ό 관계없이 μ–Έμ œλ‚˜ μ‚¬μš©ν•  수 μžˆλ‹€. ν‘œμ€€ 빌트인 κ°μ²΄λŠ” μ „μ—­ 객체의 ν”„λ‘œνΌν‹°λ‘œμ„œ μ œκ³΅λœλ‹€. λ”°λΌμ„œ λ³„λ„μ˜ μ„ μ–Έ 없이 μ „μ—­ λ³€μˆ˜μ²˜λŸΌ μ–Έμ œλ‚˜ μ°Έμ‘°ν•  수 μžˆλ‹€. - 호슀트 객체 : ECMAscript 사양에 μ •μ˜λ˜μ–΄ μžˆμ§€ μ•Šμ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ ν™˜κ²½(exλΈŒλΌμš°μ € λ˜λŠ” Node.js)μ—μ„œ μΆ”κ°€λ‘œ μ œκ³΅ν•˜λŠ” 객체λ₯Ό λ§ν•œλ‹€. - μ‚¬μš©μž μ •μ˜ 객체 : ν‘œμ€€ 빌트인 객체와 호슀트 객체처럼 κΈ°λ³Έ μ œκ³΅λ˜λŠ” 객체가 μ•„λ‹Œ μ‚¬μš©μžκ°€ 직접 μ •μ˜ν•œ 객체λ₯Ό λ§ν•œλ‹€. 21.2 ν‘œμ€€ 빌트인 객체 μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” Object, String, ..

20μž₯ strict mode

20.1 strict modeλž€? μš°μ„  strict modeλ₯Ό μ•ŒκΈ°μœ„ν•΄μ„œλŠ” 암묡적 μ „μ—­μ΄λΌλŠ” κ°œλ…μ„ μ•Œμ•„μ•Ό ν•  ν•„μš”κ°€ μžˆλ‹€. 암묡적 μ „μ—­μ΄λž€ λ³€μˆ˜λ‘œ μ„ μ–Έν•˜μ§€ μ•Šμ€ μ‹λ³„μžμ— 값을 ν• λ‹Ήν•˜λŠ” 경우 ReferenceErrorκ°€ λ°œμƒν•˜μ§€ μ•Šκ³  마치 μ „μ—­ λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ‹€. κ·Έ μ΄μœ λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ•”λ¬΅μ μœΌλ‘œ λ³€μˆ˜λ‘œ μ„ μ–Έλ˜μ§€ μ•Šμ€ μ‹λ³„μžλ₯Ό μ „μ—­κ°μ²΄μ˜ ν”„λ‘œνΌν‹°λ‘œ 동적 μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 예λ₯Όλ“€μ–΄ window 전역객체에 λŒ€ν•œ ν‘œν˜„μ€ μƒλž΅μ΄ κ°€λŠ₯ν•˜λ―€λ‘œ μ „μ—­κ°μ²΄μ˜ ν”„λ‘œνΌν‹° 동적 생성이 λ˜λŠ” 것이닀. function foo(){ x = 10; // 암묡적 전역이 생성됨(μ „μ—­ 객체 window의 ν”„λ‘œνΌν‹°κ°€ λœλ‹€.) } foo(); console.log(x); // 10 개발자의 μ˜λ„μ™€λŠ” 상관없이 λ°œμƒν•œ 암묡적 μ „..