본문 바로가기

전체 글

(6)
[JavaScript] JavaScript에서의 스코프 Scope는 모든 프로그래밍 언어에서 기본이 되는 아주 중요한 개념이다. JavaScript에서는 다양한 스코프 개념이 있고 다른 언어와 차별되는 스코프 특징이 있기 때문에 주의가 필요하다. function add(x, y) { console.log(x, y); // 1 return x + y; }; add(5, 5); console.log(x, y); // 2 위의 코드를 보면 어떤 결과가 예상되는가? 1번의 경우에는 5, 5가 나오겠지만 2번의 경우에는 참조 에러가 발생한다. 함수의 매개변수의 경우에는 함수 몸체 내부에서만 참조가 가능하다. 그렇기 때문에 함수 블록 바깥에서 매개변수를 참조하게 되면 참조 에러가 발생한다. 변수의 경우 변수는 자신이 선언된 위치에 의해서 스코프가 결정된다. 사실 모든 ..
[JavaScript] '?' 옵셔널 체이닝은 무엇일까? * 구식 브라우저에는 폴리필이 필요합니다. Optional Chaining은 ES2020에서 등장한 새로운 연산자로서 '?.'의 형태로 사용하며 체인으로 이루어진 각 참조가 유효한지 명시적으로 검증하지 않고 연결된 객체 체인 내에 깊숙히 위치한 속성 값을 읽을 수 있는 연산자이다. 체이닝 연산자와 비슷하게 동작하지만, 만약의 참조가 null 혹은 undefined여도 에러식을 뱉지 않고 undefined값을 리턴한다. 함수 호출시에도 마찬가지로 값이 없다면 undefined를 리턴한다. Optional chaining을 사용하므로써 문법의 가독성이 올라가고 한결 간결한 표현식으로 작성할 수 있게 된다. 속성값이 존재한다는 확실한 보증이 없을 경우 그 객체를 탐색하는 데 도움을 준다. const anima..
[JavaScript] 변수란 무엇일까? 1. 메모리 컴퓨터는 똑똑해 보이지만 한편으로는 바보같기 때문에 사람이 쉽게 인식하는 표현을 컴퓨터는 바로 이해할 수 없다. 10 + 20 사람은 이 표현식을 10에 20을 더하니깐 결과는 30이겠구나라고 생각할 수 있지만, 컴퓨터는 저 표현식에 대한 해석이 필요하다. 10과 20이 무엇인지도 알아야 하고 +기호가 무엇을 의미하는 지도 나타내어야 한다. 그래서 컴퓨터는 CPU를 사용하여 이를 연산하고 메모리를 활용하여 이를 기억한다. 컴퓨터는 모든 데이터를 2진수로 저장하기 때문에 메모리에 저장되는 모든 데이터는 2진수로 저장된다. 하지만 이 연산된 결과값을 가져오기 위해서는 주소값이 필요한데 코드가 실행될 때마다 주소값이 변경된다. 따라서 주소에 직접 접근하는 방법은 옳은 방법이 아니다. 따라서 프로그..