Javascript40 원시값과 객체 자바스크립트가 제공하는 데이터 타입은 크게 원시타입 (primitive type)과 객체타입 (object/reference type)으로 구분할 수 있다. 원시타입과 객체타입은 근본적으로 3가지의 측면에서 차이점이 있다. 원시값은 변경 불가능한 값 (immutable value) 이다. 이에 비해 객체는 변경 가능한 값 (mutable value) 이다. 원시값을 변수에 할당하면 메모리공간에 실제 값이 저장된다. 객체는 메모리공간에 참조값 (주소)이 저장된다. 원시값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. (pass by value) 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조값이 복사되어 전달된다 (pass by reference) 원시값 한번.. 2020. 11. 11. 객체 리터럴의 확장기능 프로퍼티 축약 표현 ES6에서는 프로퍼티 값으로 변수를 사용하는 경우 변수 이름과 프로퍼티 키가 동일한 이름일 때 프로퍼티 키를 생략할 수 있다. 이때 프로퍼티 키는 변수 이름으로 자동 생성된다. let x = 1, y = 2; const obj = {x, y}; console.log(obj); // {x: 1, y: 2} 메소드 축약 표현 ES6에서는 메소드를 정의할 때 function 키워드를 생략한 축약 표현을 사용할 수 있다. // ES5 const obj = { name : 'kang', sayYeah : function() { console.log(`say ${this.name}`); } }; console.log(obj.sayYeah()); // "say kang" // ES6 const o.. 2020. 11. 11. null 병합 연산자 옵셔널 체이닝 연산자와 마찬가지로 ES11에 도입되었다. 연산자 ?? 는 좌항의 피연산자가 null 또는 undefined일 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다. 변수에 기본값을 설정할 때 유용하다. 병합연산자 ?? 가 도입되기 전에는 논리연산자 || 를 통한 단축평가로 기본값을 설정하였다. // null 병합 연산자 사용 let testString = null ?? 'this is test string'; console.log(testString); // "this is test string" // || 단축 연산자 사용 let testString = '' || 'this is test string'; console.log(testString); // "this .. 2020. 11. 11. 옵셔널 체이닝 연산자 ES11 (ECMAScript2020) 에 도입되었다. 옵셔널 체이닝 연산자 .? 는 좌항의 피연산자가 null 혹은 undefined인 경우 undefined를 반환하고 그렇지 않으면 우항의 프로퍼티 참조를 이어간다. 옵셔널 체이닝 연산자는 객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 참조할때 유용하다. 도입되기전에는 &&를 사용한 단축 평가를 통해 변수가 null 또는 undefined가 아닌지 확인하였다. // 옵셔널 체이닝 사용 let elem = null; let value = elem?.value; console.log(value); // undefined // 단축연산자 사용 let elem = null; let value = elem && .. 2020. 11. 11. 이전 1 ··· 7 8 9 10 다음