JavaScript(5)
-
JavaScript 객체
✔️객체 자바스크립트에서는 원시 값을 제외한 거의 모든 것이 객체다. 자바스크립트에서 객체는 0개 이상의 프로퍼티의 집합이며, 프로퍼티는 key와 value로 구성되어 있다. const person = { name: 'mingyo', age: 'secret', }; 자바스크립트에서 사용하는 모든 값이 프로퍼티의 value가 될 수 있다. 자바스크립트에서 함수 또한 객체(일급 객체)기 때문에 value로 사용할 수 있다. 함수가 프로퍼티 값으로 사용됐을 때 이 함수를 메서드라고 부른다. 결론적으로 객체는 0개 이상의 프로퍼티 집합이고, 프로퍼티의 값으로 함수도 사용할 수 있기 때문에 객체는 프로퍼티와 메서드의 집합으로 집합체, 이루어진 복합적인 자료구조라고 할 수 있다. 📌객체..
2023.05.16 -
Optional chaining & nullish coalescing(옵셔널 체이닝과 널 병합 연산자)
✔️옵셔널 체이닝과 널 병합 연산자 이전 포스팅에서는 단축 평가(short-circuit evaluation)에 대해서 살펴보았다. 단축 평가를 이용해 논리 연산의 결과를 결정 짓는 피연산자를 그대로 반환하는 특징을 이용해 if 문을 대체하거나 혹은 객체가 null 혹은 undefined인 경우에 발생할 수 있는 널 참조 에러를 막기도 하였다. 📌옵셔널 체이닝(?.) 옵셔널 체이닝 연산자는 ES11(ECMAScript2020)에서 도입되었다. 옵셔널 체이닝 연산자를 통해 참조하려는 객체가 null인지 혹은 undefined인지 확인할 수 있다. 만약 참조하려는 객체가 null 또는 undefined라면 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다. let elem = nu..
2023.05.16 -
Short-Circuit Evaluation(단축 평가)
✔️단축 평가 쉽게 이야기하면 앞에만 보고도 판단할 수 있으면 굳이 뒤까지 보지 않겠다는 의미이다. 이 개념은 JavaScript에만 존재하는 것은 아니다. 용어가 익숙하지 않아도 예시만 보면 경험을 통해서 다들 이해하는 것이다. true || false // -> true true || true // -> true false || false // -> false OR 연산은 둘 중 하나만 true가 되면 true 평가된다. 즉 앞에 내용이 true면 뒷 내용은 볼 필요도 없이 true로 단정지으면 된다. 실제로 앞이 true면 뒷 내용은 보지도 않고 true로 결론내린다. true && true // -> true true && false // -> false false && false // -> fa..
2023.05.16 -
Map, Set, WeakMap, WeakSet
✔️Map 일반 객체 리터럴과 비슷함 보통 key-value 구조의 객체를 Map이라고 함. JavaScript에서의 Map이 독특한 점은 객체를 key 사용할 수 있으며, 심지어 객체를 value로 사용할 수도 있다. 일반 객체 리터럴에서 우리가 사용할 때 key는 무조건 String 혹은 Symbol만 사용할 수 있었음. 🌟객체를 key로 사용할 때의 주의점 const m = new Map(); m.set('a', 'b'); m.set('c', 'd'); // 이러면 m 은 {'a' => 'b'}, {'c' => 'd'} 이렇게 나오겠지 // get 메서드로 key의 value를 가져올 ..
2023.05.16 -
타입 캐스팅(타입 변환)
✔️타입 변환 타입 변환에 두 가지 종류가 있음 명시적 타입 변환과 암묵적 타입 변환 📌명시적 타입 변환 명시적 타입 변환은 개발자가 의도적으로 값의 타입을 변환하는 경우 let x = 100; String xStr = x.toString(); 명시적으로 타입을 변환하는 경우는 보통 두 가지가 있다. 표준 빌트인 생성자 함수를 new 연산자 없이 호출 빌트인 메서드를 사용하는 경우 👉문자열 타입으로 변환 String 생성자 함수를 new 연산자 없이 호출 Object.prototype.toString 메서드를 사용 String(1); String(NaN); String(Infinity); (1).toString(); (NaN).toString(); (Infinity).toString(); 👉숫자 타입으로..
2023.05.16