JavaScript20 스코프 스코프 스코프(유효 범위)는 모든 프로그래밍 언어의 기본적이며 가장 중요한 개념이라고 할 수 있다. 특히 자바스크립트의 경우 다른 언어들의 스코프와 구별되는 특징이 있으므로 더 주의해야 한다. 그 특징에 대해 알아보겠다. function add(x, y) { // 매개변수의 스코프는 함수 몸체 내부이다. console.log(x, y); // 7 5 return x + y; } add(7, 5); // 매개변수는 함수 몸체 내부에서만 참조가능 console.log(x, y); // ReferenceError: x is not defiend 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있다. 매개변수의 스코프가 함수 몸체 내부로 한정되기 때문이다. var var1 = 1; // 코드 가장 바깥에서 선.. 2020. 11. 16. 원시값과 객체 자바스크립트가 제공하는 데이터 타입은 크게 원시타입 (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. 이전 1 2 3 4 5 다음