본문 바로가기

자바스크립트23

자바스크립트 개발자가 알아야할 33가지 개념[#06. 함수 범위(Function Scope), 블럭 범위(Block Scope), 렉시컬(lexical) 범위] 스코프 (Scope) 자바스크립트에서 스코프는 어떤 변수에 접근할 수 있는지를 정의한다. 일반적으로 2가지의 스코프가 존재한다. 전역 스코프와 지역 스코프이다. 전역 스코프(Global Scope) 만일 변수가 모든 함수에 속하지 않고 {}괄호안에 들어있지도 않다면 우리는 그 변수를 전역 변수라고 한다. 전역 변수를 선언하면, 자바스크립트 코드 어디에서든 불러 올 수 있다. 심지어 함수 내부에서 도 사용 가능하다. 전역변수의 사용은 조심할 필요가 있다. 왜냐하면 두개 혹은 그 이상의 변수들이 같은 이름을 가지게 되어 네이밍 충돌(naming cillision)이 발생할 확률이 있기 때문이다. 만일 우리가 const 또는 let 키워드로 같은 이름의 변수를 선언하게 된다면 우리는 에러를 보게 된다. 만일 .. 2022. 5. 11.
자바스크립트 개발자가 알아야할 33가지 개념(#05. == vs === and Typeof) 자바스크립트는 눈으로 보기엔 비슷하지만 사실 매우 다른 동등 비교연산자 두개가 있다. 자바스크립트 사용자라면 누구나 == 과 ===을 이용하여 어떤 값이 동일한지 비교할 수 있다. 이제부터 차이점을 알아보자 === 동등 연산자 자바스크립트에서 === 연산을 사용할 때, 엄격한 동등성을 비교한다. 엄격한 동등성의 의미는 타입과 값이 모두 같이야 한다는 뜻이다. 예제를 살펴보면, 1. 둘 다 숫자라는 타입이 같고 값도 같다. 2. 둘 다 문자열이라는 타입이 같고 값도 같다 3. 둘 다 문자열이라는 타입은 같지만 값은 다르다. 4. 둘 다 불리언(Boolean)이라는 타입이 같고 값도 같다. ==동등 연산자 자바스크립트에서 == 연산자를 쓰는 목적은 느슨한 동등 비교를 위함이다. == 연산자도 강제 형변환(t.. 2022. 5. 10.
자바스크립트 개발자가 알아야할 33가지 개념(#04. 암묵적 타입 변환 (Implicit coercion)) 자바스크립트의 암묵적 타입 변환(implicit coercion)은 간단하게 말하자면 예상치 못한 타입을 받았을 때 예상 가능한 타입으로 바꿔준다고 생각하면 된다. 그로 인해 사용자는 숫자 값을 넘겨야 하는 곳에 문자열을 넣을 수도 있고 문자열을 넣어야 하는 곳에 객체를 넘길 수도 있다. 이러한 일이 발생했을 때 자바스크립트 엔진은 사용자가 잘못 넣은 타입을 올바른 타입으로 변환하려고 시도한다. 이것은 자바스크립트의 주요한 기능 중 하나이며 가장 피해야할 기능이다. 숫자 표현식에서 숫자가 아닌 값 문자열 사용자가 숫자 표현식에서 문자열 (-, *, /, %을 포함한 문자열)을 피연산자로 넘겼을 때마다 숫자의 암묵적 타입변환 프로세스는 문자열을 인자로 자바스크립트 내부에 내장된 Number함수를 불러오는 .. 2022. 5. 10.
자바스크립트 개발자가 알아야할 33가지 개념(#03. 값(value) vs 참조(reference)) 자바스크립트는 값에 의한 전달(passed by value)이 일어나는 5가지의 데이터타입(Boolean, Null, Undefined, String, Number)을 가지고 있다. 우리는 이러한 데이터 타입을 원시 타입(Primitive Types)이라고 부른다. 또 자바스크립트는 참조에 의한 전달(passed by reference)이 일어나는 3가지의 데이터 타입(Array, Function, Object)도 가지고 있다. 이 3가지는 크게 보면 전부 객체(Object)로 볼 수 있다. Pass by value 원시 타입은 값으로 전달된다. 즉, 값이 복사되어 전달된다. 원시 타입은 값이 한번 정해지면 변경 할 수 없다. 또한, 이들 값은 런타임(변수 할당 시점)에 메모리의 스택 영역(Stack S.. 2022. 5. 9.