JavaScript

    JS μœ μ‚¬λ°°μ—΄κ³Ό λ°°μ—΄μ˜ 차이점

    μœ μ‚¬ λ°°μ—΄κ³Ό 배열은 μ–΄λ–»κ²Œ λ‹€λ₯ΌκΉŒ? μœ μ‚¬ λ°°μ—΄ ν˜•νƒœ μ•„λž˜ λ³€μˆ˜λ“€μ„ 좜λ ₯해보면 λͺ¨λ‘ λ°°μ—΄κ³Ό ν˜•νƒœκ°€ κ°™μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ§„μ§œ 배열은 array λΏμž…λ‹ˆλ‹€. λΈŒλΌμš°μ €μ—μ„œ 데이터λ₯Ό λ„˜κ²¨μ€„ λ•Œ λ°°μ—΄μ²˜λŸΌ λ³΄μ΄λŠ” 객체λ₯Ό λ„˜κ²¨μ€λ‹ˆλ‹€. 이것을 μœ μ‚¬ 배열이라고 ν•©λ‹ˆλ‹€. let array = [1, 2, 3]; // [1, 2, 3] let nodes = document.querySelectorAll('div'); // NodeList [div, div, div, div, div, ...] let els = document.body.children; // HTMLCollection [noscript, link, div, script, ...] Array.isArray() λ©”μ„œλ“œλ‘œ array 인지 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. Array..

    JS ꡬ쑰뢄해 ν• λ‹Ή

    ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή Destructuring Assignment κ°μ²΄λ‚˜ 배열에 μ €μž₯된 데이터 전체가 μ•„λ‹Œ μΌλΆ€λ§Œ ν•„μš”ν•œ κ²½μš°μ— κ°μ²΄λ‚˜ 배열을 λ³€μˆ˜λ‘œ 'λΆ„ν•΄’ν•  수 있게 ν•΄μ£ΌλŠ” νŠΉλ³„ν•œ 문법인 ꡬ쑰 λΆ„ν•΄ 할당을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 객체 ꡬ쑰뢄해 ν• λ‹Ή // 일반적인 객체 속성 μ ‘κ·Ό const user = {name: "징징", age: 10}; console.log(user.name); // 징징 console.log(user.age); // 10 // ꡬ쑰뢄해 ν• λ‹Ή μ‚¬μš© βœ… const { name, age } = user; console.log(name); // 징징 console.log(age); // 10 ꡬ쑰 λΆ„ν•΄λ₯Ό μ‚¬μš©ν•˜λ©΄ 데이터에 μ ‘κ·Όν•˜κΈ° νŽΈν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν‚€ κ°’μœΌλ‘œ 뢈러온 것이기에 name 이 μ•„..

    JS μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ™€ 콜 μŠ€νƒ

    https://medium.com/sjk5766/call-stack%EA%B3%BC-execution-context-%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-3c877072db79 Call Stackκ³Ό Execution Context λ₯Ό μ•Œμ•„λ³΄μž 이 κΈ€μ—μ„œ Call Stackκ³Ό Execution Context에 λŒ€ν•΄ λ‹€λ£Ήλ‹ˆλ‹€. 각 μš©μ–΄λŠ” ν•œκ΅­μ–΄λ‘œ ν•΄μ„ν•˜μ§€ μ•Šκ³  μ˜μ–΄ κ·ΈλŒ€λ‘œ ν‘œκΈ°ν•©λ‹ˆλ‹€. medium.com μœ„ 링크λ₯Ό μ°Έκ³ ν•˜μ—¬ μ œκ°€ μ΄ν•΄ν•œ λΆ€λΆ„λ§Œ 제 μ‹λŒ€λ‘œ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. μœ„ 링크λ₯Ό λ³΄μ‹œλ©΄ 더 μžμ„Έν•˜κ²Œ κ·Έλ¦Όκ³Ό ν•¨κ»˜ 정보λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ Execution context μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” ν™˜κ²½μ„ λ§ν•©λ‹ˆλ‹€. 크게 2κ°€μ§€λ‘œ λ‚˜λ‰©..

    JS ν˜Έμ΄μŠ€νŒ…κ³Ό TDZ

    ν˜Έμ΄μŠ€νŒ… hoisting μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μ „ μ½”λ“œ 전체λ₯Ό μŠ€μΊ”ν•˜λ©΄μ„œ ν˜•μƒν™” 및 κ΅¬λΆ„ν•˜λŠ” 과정을 κ±°μΉ˜λŠ”λ° 이 κ³Όμ •μ—μ„œ λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“± λͺ¨λ“  선언을 μœ„λ‘œ λŒμ–΄ μ˜¬λ¦½λ‹ˆλ‹€. 인터프리터가 λ³€μˆ˜μ™€ ν•¨μˆ˜μ˜ λ©”λͺ¨λ¦¬ 곡간을 μ„ μ–Έ 전에 미리 ν• λ‹Ήν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. var 의 경우 ν˜Έμ΄μŠ€νŒ… μ‹œ undefined 둜 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™” ν•˜μ§€λ§Œ, let κ³Ό const λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™” λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— μ•„λž˜μ™€ 같은 μ½”λ“œ(1) κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ„ μ–ΈλΆ€λ§Œ λŒμ–΄μ˜¬λ € 놓은 것이기에, (2) μ½”λ“œμ²˜λŸΌ ν• λ‹Ήλœ 값을 κ°€μ Έ μ˜€λŠ” 것은 λΆˆκ°€λŠ₯ ν•©λ‹ˆλ‹€. add(1, 3); // (1) ν•¨μˆ˜ 선언보닀 μœ„μ— μžˆμ§€λ§Œ 였λ₯˜ λ‚˜μ§€ μ•Šκ³  μ‹€ν–‰λ©λ‹ˆλ‹€. console.log(a); // (2) μ—λŸ¬. ν• λ‹Ήλ˜μ§€ μ•Šμ€ 것을 좜λ ₯..

    JS μŠ€μ½”ν”„μ™€ μŠ€μ½”ν”„ 체인

    μŠ€μ½”ν”„ Scope μŠ€μ½”ν”„λŠ” μ‹λ³„μž(λ³€μˆ˜, ν•¨μˆ˜, 클래슀 이름) μ ‘κ·Ό κ·œμΉ™μ— λ”°λ₯Έ 유효 λ²”μœ„μž…λ‹ˆλ‹€. 즉, κ°„λ‹¨ν•˜κ²Œ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” μœ νš¨ν•œ λ²”μœ„λΌκ³  μƒκ°ν•˜λ©΄ λ©λ‹ˆλ‹€. μŠ€μ½”ν”„λŠ” λΈ”λŸ­ { } ν˜Ήμ€ ν•¨μˆ˜μ— μ˜ν•΄ λ‚˜λˆ μ§‘λ‹ˆλ‹€. (λΈ”λŸ­μ΄λΌ ν•˜λ©΄, if(){}, for(){} ... 등도 ν¬ν•¨ν•©λ‹ˆλ‹€.) μ•„λž˜ μ˜ˆμ‹œλ₯Ό 보면, λΈ”λŸ­ μ•ˆμ—μ„œλŠ” λΈ”λŸ­ 밖에 μžˆλŠ” k 도 λΈ”λŸ­ μ•ˆμ— μžˆλŠ” x 도 잘 좜λ ₯λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λΈ”λŸ­ λ°–μ—μ„œ λΈ”λŸ­ μ•ˆμ— μžˆλŠ” x λ₯Ό 좜λ ₯ν•˜λ €κ³  ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. ν•¨μˆ˜ λ°–μ—μ„œ μ •μ˜λœ k λ₯Ό μ „μ—­ λ³€μˆ˜, μ „μ—­ μŠ€μ½”ν”„ ( μ „μ²΄μ—μ„œ μ ‘κ·Ό 유효) ν•¨μˆ˜ λ‚΄μ—μ„œ μ •μ˜λœ x λ₯Ό 지역 λ³€μˆ˜, 지역 μŠ€μ½”ν”„ 라고 ν•©λ‹ˆλ‹€. (지역 λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό 유효) λ°–(μ „μ—­) μ—μ„œλŠ” μ•ˆ(지역)의 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μ—†μ§€λ§Œ, μ•ˆ(지역)μ—μ„œ..

    JS Equality operators == === != !==

    μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 값이 같은지 μ•„λ‹Œμ§€λ₯Ό 비ꡐ할 λ•Œ μ‚¬μš©ν•˜λŠ” 동일 μ—°μ‚°μžλ₯Ό μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. == : 값이 κ°™μŒ === : κ°’κ³Ό νƒ€μž… λ‘˜ λ‹€ κ°™μŒ != : 값이 닀름 !== : κ°’κ³Ό νƒ€μž… λ‘˜ 쀑에 ν•˜λ‚˜λ§Œ 달라도 닀름 κΈ°λ³Έ μžλ£Œν˜• μ˜ˆμ‹œμž…λ‹ˆλ‹€. console.log(1 == '1'); // true console.log(1 === '1'); // false console.log(1 != '1'); // πŸ“ false console.log(1 != 1); // πŸ“πŸ“ false console.log(1 !== '1'); // true 값은 κ°™μ§€λ§Œ νƒ€μž…μ΄ 닀름 console.log(1 !== 2); // true 값은 λ‹€λ₯΄μ§€λ§Œ νƒ€μž…μ΄ κ°™μŒ console.log(1 !== 1); // πŸ“πŸ“πŸ“ false μ²˜μŒμ—λŠ” != ..

    JS undefined κ³Ό null 비ꡐ

    undefined κ³Ό null 은 λ‘˜ λ‹€ ν……ν…… 빈 μƒνƒœλ₯Ό λ§ν•˜λŠ”λ°, λ―Έλ¬˜ν•œ 차이가 μžˆμŠ΅λ‹ˆλ‹€. let item; // 값이 아직 ν• λ‹Ή λ˜μ§€ μ•Šμ€ μƒνƒœ console.log(item); // κ²°κ³Ό : undegined item = null; // 빈 값이 λΌλŠ” 것을 ν• λ‹Ή ν•΄μ€€ μƒνƒœ console.log(item); // κ²°κ³Ό : null λ˜ν•œ νƒ€μž…μ—μ„œλ„ 차이가 λ‚©λ‹ˆλ‹€. console.log(typeof null); // object console.log(typeof nudefined); // undefined null 은 μ—„λ°€νžˆ λ§ν•˜μžλ©΄, λΉ„μ–΄μžˆλŠ” κ°μ²΄μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ undefined λŠ” λΉ„μ–΄μžˆλŠ”μ§€ μ•„λ‹Œμ§€ λͺ¨λ₯΄λŠ” μƒνƒœλ₯Ό λ‚˜νƒ€ λƒ…λ‹ˆλ‹€. 곡뢀λ₯Ό ν•˜λ‹€ 보면 좜λ ₯ κ°’μ—μ„œ null ν˜Ήμ€ undefined λ₯Ό λ§ˆμ£ΌμΉ˜λŠ”..

    JS λŠμŠ¨ν•œ νƒ€μž…μ˜ 동적 μ–Έμ–΄

    μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λŠμŠ¨ν•œ νƒ€μž…μ˜ 동적 μ–Έμ–΄μž…λ‹ˆλ‹€. ν•˜λ‚˜μ”© ν’€μ–΄μ„œ λ΄…μ‹œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” νƒ€μž…μ΄ μžˆμ§€λ§Œ, λ³€μˆ˜μ— νƒ€μž…μ„ ν•„μˆ˜μ μœΌλ‘œ μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€. λ•Œλ¬Έμ— ‘λŠμŠ¨ν•œ νƒ€μž… (loosely typed) μ–Έμ–΄’ 라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ³€μˆ˜μ— μ €μž₯λ˜λŠ” κ°’μ˜ νƒ€μž…μ€ μ–Έμ œλ“ μ§€ λ°”κΏ€ 수 있기 λ•Œλ¬Έμ— ‘동적 νƒ€μž…(dynamically typed) μ–Έμ–΄' 라고도 λΆ€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ 이 νŠΉμ§•μ΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 약점이 λ©λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 컴파일 된 ν›„ μ‹€ν–‰λ˜λŠ” 것이 μ•„λ‹ˆλΌ μ‹€ν–‰λ˜λŠ” μˆœκ°„ ν•œ 쀄씩 읽으며 (인터프리터) 싀행이 λ©λ‹ˆλ‹€. 즉, μ»΄νŒŒμΌλ˜λŠ” 과정이 λ”°λ‘œ μ—†κΈ° λ•Œλ¬Έμ— νƒ€μž… 였λ₯˜λ₯Ό μ‹€ν–‰ 전에 체크할 μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. 이런 약점을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄μ„œ κ°œλ°œμžλŠ” μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”? 1. μ˜ˆμƒλ˜λŠ” νƒ€μž… μ—λŸ¬λ₯Ό 예..

    JS ν•¨μˆ˜ μ„ μ–Έλ¬Έκ³Ό ν•¨μˆ˜ ν‘œν˜„μ‹ 차이

    ν•¨μˆ˜ μ„ μ–Έλ¬Έκ³Ό ν•¨μˆ˜ ν‘œν˜„μ‹μ΄ 무엇인지 μ•Œμ•„λ΄…μ‹œλ‹€. ν•¨μˆ˜λ₯Ό λ§Œλ“ λ‹€λŠ” λͺ©μ μ€ 동일 ν•˜λ‚˜ λ§Œλ“œλŠ” 방법이 λ‹€λ¦…λ‹ˆλ‹€. // ν•¨μˆ˜ μ„ μ–Έλ¬Έ function add(a, b) { return a+b; } // ν•¨μˆ˜ ν‘œν˜„μ‹ const sum = function(a,b) { return a+b; } ν•¨μˆ˜ 자체λ₯Ό μ„ μ–Έν•˜λ©΄ ν•¨μˆ˜ μ„ μ–Έλ¬Έ, μ„ μ–Έν•œ ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— λ‹΄μ•„μ„œ μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜ ν‘œν˜„μ‹μ΄λΌ ν•©λ‹ˆλ‹€. 이 λ‘˜μ€ ν˜Έμ΄μŠ€νŒ… λ°©μ‹μ—μ„œ 차이가 λ‚©λ‹ˆλ‹€. add(1, 3); // ν•¨μˆ˜ 선언보닀 μœ„μ— μžˆμ§€λ§Œ 였λ₯˜κ°€ λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. function add(a, b) { // ν•¨μˆ˜ μ„ μ–Έλ¬Έ return a+b; } console.log(sum(1,2)); // μ—λŸ¬. // ReferenceError Cannot access 'sum' before..

    JS 얕은 볡사와 κΉŠμ€ 볡사

    객체(Object)λ₯Ό λ³΅μ‚¬ν•˜λŠ” 방법은 얕은 볡사(Shallow Copy) 와 κΉŠμ€ 볡사(Deep Copy) 둜 λ‚˜λ‰©λ‹ˆλ‹€. μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œλŠ” μ—¬λŸΏ μžˆμ§€λ§Œ, 컨셉은 2가지 μž…λ‹ˆλ‹€. κ°’μ˜ μ£Όμ†Œ 값을 볡사해 쀄 것인지, κ°’ 자체λ₯Ό 볡사해 쀄 κ²ƒμΈμ§€μš”. 객체같은 μ°Έμ‘°ν˜• 데이터λ₯Ό λ³΅μ‚¬ν•˜κ²Œ 되면, 값이 λ©”λͺ¨λ¦¬ 셀에 ν• λ‹Ήλ˜λŠ” 것이 μ•„λ‹ˆλΌ 값이 λ“€μ–΄ μžˆλŠ” μ£Όμ†Œκ°’(μ°Έμ‘°κ°’) 이 λ©”λͺ¨λ¦¬ 셀에 λ“€μ–΄ κ°‘λ‹ˆλ‹€. λ•Œλ¬Έμ— 볡사λ₯Ό ν•˜κ²Œ 되면, κ°’ μžμ²΄κ°€ μ•„λ‹ˆλΌ 값이 λ“€μ–΄κ°€ μžˆλŠ” μ£Όμ†Œκ°€ 전달 λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ λ³΅μ‚¬λ˜λŠ” 것을 Shallow Copy 라고 ν•©λ‹ˆλ‹€. Shallow Copy spread syntax, Array.prototype.concat(), Array.prototype.slice(),Array.from(), Object.as..

    JS λΆˆλ³€ 객체 λ§Œλ“€κΈ°

    νŠΉμ • 객체λ₯Ό μˆ˜μ •μ΄ λΆˆκ°€λŠ₯ν•˜κ²Œ λ§Œλ“€ λ•Œ, λΆˆλ³€ 객체λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•©λ‹ˆλ‹€. λΆˆλ³€ 객체λ₯Ό λ§Œλ“œλŠ” 방법은 3가지 μž…λ‹ˆλ‹€. 각 λ°©λ²•λ§ˆλ‹€ μˆ˜μ • κ°€λŠ₯ λ²”μœ„κ°€ λ‹€λ₯΄κ²Œ μ œν•œλ˜κΈ° λ•Œλ¬Έμ— ν•„μš”μ— 따라 μ„ νƒν•˜λ©΄ λ©λ‹ˆλ‹€. 1. Object.freeze() 속성 μž¬μ •μ˜ X, μΆ”κ°€ X, μˆ˜μ • X, μ‚­μ œ X κ·ΈλŸ¬λ‚˜! μ€‘μ²©λœ company λŠ” freeze λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— company.name 은 μˆ˜μ • κ°€λŠ₯ν•©λ‹ˆλ‹€. 속성 μž¬μ •μ˜κ°€ μ•ˆλœλ‹€λŠ” 것은 Object.defineProperty() 둜 속성듀을 μž¬μ •μ˜ ν•  수 μ—†λ‹€λŠ” λœ»μž…λ‹ˆλ‹€. μ•„λž˜ 링크 μ°Έκ³ . const company = { name: 'SS'}; const people = { name: 'lee', age: 20, work: company } Object.freeze(p..

    JS Truthy 와 Falsy

    μˆ«μžλ‚˜ λ¬Έμžμ—΄λ„ μ–΄λ–€ 값이냐에 따라 true, false 의 값을 κ°€μ§‘λ‹ˆλ‹€. 이것을 μ •ν™•ν•˜κ²Œ μ•Œκ³  μžˆμ–΄μ•Ό λ‚˜μ€‘μ— ν—·κ°ˆλ¦¬μ§€ μ•ŠμœΌλ‹ˆ 이번 κΈ°νšŒμ— μ™Έμ›Œ λ΄…μ‹œλ‹€! Falsy 거짓 0 -0 '' null undefined NaN Truthy μ°Έ 1 -1 'hello!' {} Infinity μ°Έκ³  자료 🌈 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Boolean Boolean - JavaScript | MDN Boolean κ°μ²΄λŠ” λΆˆλ¦¬μ–Έ 값을 감싸고 μžˆλŠ” κ°μ²΄μž…λ‹ˆλ‹€. developer.mozilla.org

    JS ν˜• λ³€ν™˜ (문자λ₯Ό 숫자둜, 숫자λ₯Ό 문자둜), λ³€μˆ˜μ˜ νƒ€μž… 확인 typeof

    ν˜• λ³€ν™˜μ— μ•žμ„œ λ³€μˆ˜μ˜ νƒ€μž…μ„ μ•Œ 수 μžˆλŠ” 방법을 μ•Œμ•„ λ³΄κ² μŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•©λ‹ˆλ‹€. 을 μ‚¬μš©ν•˜λ©΄ λ³€μˆ˜μ˜ νƒ€μž…μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. boolean ν˜•, μˆ«μžν˜•μ„ λ¬Έμžν˜• 으둜 λ°”κΏ” λ΄…λ‹ˆλ‹€. let value = true; alert(typeof value); // boolean value = String(value); // string 으둜 ν˜• λ³€ν™˜ alert(value); // "true" alert(typeof value); // string String() 을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  +"" λ₯Ό μ‚¬μš©ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. ν˜Ήμ€ toString() 을 μ‚¬μš©ν•©λ‹ˆλ‹€. let cnt = 1; console.log(typeof cnt); // number console.log(typeof (cnt+"")); // string cons..

    JS κΈ°λ³Έν˜• 데이터와 μ°Έμ‘°ν˜• λ°μ΄ν„°μ˜ 차이

    μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ νƒ€μž…μ€ 크게 2κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€. κΈ°λ³Έν˜• 데이터(Primitive) 와 μ°Έμ‘°ν˜• 데이터(Reference) μž…λ‹ˆλ‹€. κΈ°λ³Έν˜• λ°μ΄ν„°μ—λŠ” string, number, bigint, boolean, undefined, symbol, null 이 μžˆμŠ΅λ‹ˆλ‹€. μ°Έμ‘°ν˜• λ°μ΄ν„°μ—λŠ” object κ°€ 있고, κ±°κ²Œμ— 포함이 λ˜λŠ” array, function, RegExp(μ •κ·œν‘œν˜„μ‹), map, set 등이 μžˆμŠ΅λ‹ˆλ‹€. 두 νƒ€μž…μ˜ κ°€μž₯ 큰 μ°¨μ΄λŠ” 값을 μ €μž₯ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. κΈ°λ³Έν˜• λ°μ΄ν„°λŠ” λ°”λ‘œ 값을 λ©”λͺ¨λ¦¬μ— ν• λ‹Ήν•˜μ§€λ§Œ, μ°Έμ‘°ν˜• λ°μ΄ν„°λŠ” 값이 λ“€μ–΄ μžˆλŠ” λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œλ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€. 예λ₯Ό 듀어보면, λ¨Όμ € a 에 1 을 λ„£μŠ΅λ‹ˆλ‹€. let a = 1; let b = a; a의 값을 받은 bλ₯Ό 좜λ ₯ν•˜λ©΄ 1이 λ‚˜μ˜΅λ‹ˆλ‹€. 이것을..