논리합연산자 ( || )논리합 연산자를 활용해 기본값을 설정할 수 있다.if-else 혹은 삼항연산자 등을 활용하는 경우를 훨씬 간단하게 표현할 수 있다는 것!const person = { age: 30,};const getUserName = (user) => { return user.name || "신원미상";};const getUserName2 = (user) => { if(!user.name) return "신원미상"; else return user.name;}; 논리곱연산자 ( && )특정 조건이 성립할 때 수행할 내용을 지정해줄 수 있다.const loggedIn = true;const userName = "르탄이";loggedIn && console.log(`환영합니다. ${userN..
Destructuring객체객체 내부의 요소들을 쪼개서 사용할 수 있다 const person = { name: "르순이", age: 28,};function greet({age, name}) { console.log(`안녕하세요. 제 이름은 ${name}이고, ${age}살 입니다.`);}greet(person);위처럼 사용하는 경우 객체 내부에서 요소의 순서와 분해된 순서가 달라지면 영향이 있지 않을까 생각할 수 있지만, key의 이름과 일치하는 변수에 할당되므로 영향 없다! 객체 Destructuring 사용 예시const movie = { title: "Inception", // 생략};const { title } = movie; // "Inception"// --------------..
자바스크립트 엔진자바스크립트 엔진 = 자바스크립트를 읽고 동작시키는 프로그램기존에 사용하던건 크롬 브라우저의 V8기존의 V8을 발전시켜 다른 환경에서도 사용할 수 있게 만들어 준것이 node.js고, 이걸 자바스크립트 런타임이라고 함 자바스크립트 실행 순서1) 실행 컨텍스트 생성2) 전역 컨텍스트 평가 스택에 추가3) 함수 컨텍스트 평가 스택에 추가4) 내부 함수까지 평가를 마쳤다면, 이벤트 루프에 밀어넣고 큐에 추가5) 동기/비동기 나눠서 수행 후 일이 끝났다면 스택을 하나씩 걷어낸다6) 스택을 모두 걷어내면 끝! 실행되는 방법1) 실행컨텍스트 = 자바스크립트를 실행하는 전체적인 맥락자바스크립트 엔진은 전역 스코프를 제일 먼저 평가함콜스택에 가장 먼저 전역 스코프가 쌓인다선언부 확인: 변수, 함수 선언..
Scope: 변수와 함수가 유효한 범위, JS에서는 주로 함수 스코프와 블록 스코프가 사용된다! 함수 스코프함수 내에서 선언된 변수는 함수 내에서만 유효하다function foo() { var x = 'local'; console.log(x); // x}foo();console.log(x); // 유효한 x가 없음! reference errorif(true) { var secret = '12345';}console.log(secret); // 12345 if문은 함수가 아니기 때문에 { } 영향 X 블록 스코프{ } 로 감싸진 블록 내에서만 유효하다! let, const는 블록 스코프를 지원한다.{ let y = 'block scoped'; console.log(y); // block..
자식 클래스가 생성자를 오버라이딩 하는 경우자식 클래스의 생성자가 호출됐을 때 무조건 부모 클래스의 생성자도 호출된다. 그런데, 자식클래스가 생성자를 오버라이딩 하는 경우가 생긴다.class Car { constructor (name, type, price) { this._name = name; // ...생략 }}class ElectronicCar { constructor (name, price, chargeTime) { super(name, 'e', price); this._chargeTime = chargeTime; } set chargeTime(value) { this._chargeTime = value; }}const elecCar = new Electr..
참조타입(객체)은 속성을 추가/제거하거나 값을 변경하는 등 여러 변경이 일어날 수 있다.만약 어떤 객체가 더이상 변경되지 않도록 막고싶다면 경우에따라 freeze(), seal()을 사용할 수 있다. freeze() - 모든 변경을 막는 경우새로운 속성 추가/제거, 속성의 값 변경을 포함한 모든 변경을 막는다. 설정 가능 여부, 쓰기 가능 여부가 모두 거짓이 된다!또한 변경을 막은 객체를 반환한다. const obj = { prop: 42,};const returnObj = Object.freeze(obj);obj.prop = 33; // 처리X, 에러발생Xconsole.log(obj.prop); // 42console.log(obj === returnObj); // true seal() -..