JavaScript/theory

    [자바스크립트] var 키워드를 사용하지 말아야 하는 이유

    [자바스크립트] var 키워드를 사용하지 말아야 하는 이유

    자바스크립트에서 변수를 선언하는 방법으로는 var, const, let 3가지 키워드가 있다. 사실 EcmaScript5 전까지는 var 키워드만 존재했으며 이후로 const, let이 추가된 것이다. 이 var 키워드는 독특한 특징들이 있어 사용에 주의해야 한다. var 키워드를 왜 사용하면 안될까? 1. 동일한 식별자를 중복 선언할 수 있다. var a = 1; var b = 1; ... var a = 100; console.log(a, b); // 100 1 위 코드와 같이 동일한 이름의 변수를 선언해도 에러가 발생하지 않는다. 의도치 않게 이미 선언했던 중요한 변수 값이 변경되어 심각한 문제를 일으킬 수 있다. 2. 함수 레벨의 스코프를 가진다. 변수는 항상 스코프를 가지는데, var 키워드로 선..

    [자바스크립트] 렉시컬 스코프

    스코프와 스코프 체인 스코프란, 식별자의 유효 범위를 말한다. 스코프 체인이란, 이 식별자의 유효 범위를 뜻하는 스코프가 계층적으로 연결된 것을 의미한다. 함수에서 스코프를 결정하는 방식으로는 동적 스코프와 정적 스코프 방식이 있다. 동적 스코프와 정적 스코프의 차이는 var x = 1; function fun1(){ var x = 2; fun2(); } function fun2(){ console.log(x); } fun1(); // 결과1 = ? fun2(); // 결과2 = ? 에서 결과1, 결과2가 어떤 형태일 지 예측해보면 된다. (1) 2 1 출력 (2) 1 1 출력 2가지 경우로 예측할 수 있을 것이다. 실제로 이 스코프에 대해 공부하게 된 계기도 이 코드와 유사한데, 알고리즘 문제를 풀면서..

    [자바스크립트] 동등 비교 연산자 "==" 와 일치 비교 연산자 "==="

    [자바스크립트] 동등 비교 연산자 "==" 와 일치 비교 연산자 "==="

    비교 연산자 사용하기 비교 연산자 설명 비교 연산자는 연산자를 기준으로 좌항과 우항의 피연산자를 비교하여 그 결과를 불린 값으로 반환한다. 주로 if문, for문과 같은 제어문의 조건식에서 사용한다. 자바스크립트에서 비교 연산자는 다음의 4가지가 있다. 비교 연산자 의미 예시 설명 == 동등 비교 x==y x와 y의 값이 같다 != 부동등 비교 x!=y x와 y의 값이 같다 === 일치 비교 x===y x와 y의 값, 타입이 같다 !== 불일치 비교 x!==y x와 y의 값, 타입이 다르다 동등 비교 연산자와 일치 비교 연산자가 모두 비교 연산자의 역할을 하지만, 비교하는 엄격성에서 차이가 있다. 동등 비교 연산자는 느슨한 비교를 하고, 일치 비교 연산자는 엄격한 비교를 수행한다. 동등 비교 연산자 "=..

    [자바스크립트] 얕은 복사와 깊은 복사

    [자바스크립트] 얕은 복사와 깊은 복사

    얕은복사? 깊은복사? 이것 때문에 당황한 경험이 있다. 로직을 잘 짰고, 재귀를 통해 내가 원하는 값이 담긴 배열을 열심히 정답 배열에 넣었는데, 정답 배열을 살펴보니 죄다 똑같은 낱개 배열들이 들어 있던 것... 아무튼, 얕은 복사의 쓴맛을 먼저 경험해보고 작성하는 글이다. * 주소 참조는 알고 있었으나, 각각 push 명령을 해주기 때문에 문제가 될 것이라고 생각을 못했다. * 그래서, 어떤게 문제인지 조차 모르겠어서 배열 관련 연관검색어를 뒤져봤었다,, 자료형 자바스크립트는 얕은 복사(= 참조 복사)와 깊은 복사(=값 복사)가 가능하다. 자바스크립트의 자료형을 먼저 소개하면, 원시형 참조형 Number Object String Boolean Null Undefined Symbol 으로 나뉜다. 원시..