본문 바로가기

전체 글77

JavaScript - IIFE, Modules and Namespaces IIFE IIFE(Immediately Invoked Function Expression)는 정의와 동시에 즉시 실행되는 함수를 의미한다. (function() { statements })(); Self-Executing Anonymous Function으로 알려진 디자인 패턴이고 크게 두 부분으로 구성된다. 첫 번째는 괄호((), Grouping Operator)로 둘러싸인 익명함수(Anonymous Function)이다. 이는 전역 스코프에 불필요한 변수를 추가해서 오염시키는 것을 방지할 수 있을 뿐 아니라 IIFE 내부 안으로 다른 변수들이 접근하는 것을 막을 수 있다. 두 번째는 즉시 실행 함수를 생성하는 괄호() 이다. 이를 통해 자바스크립트 엔진은 함수를 즉시 해석해서 실행한다. 아래 함수는 .. 2020. 9. 18.
JavaScript - Expression vs Statement(표현식과 문장) 자바스크립트에서는 대표적인 2가지 문법적 카테고리가 있다. Expression Statement 표현식(Expression)은 문장(Statement)처럼 동작할 수 있지만 문장(Statement)은 표현식(Expression)처럼 동작할 수 없다. Expression(표현식) 표현식은 값을 산출해내는 코드를 의미한다. 값이 도출되기 때문에 함수의 인자로 들어갈 수 있다. 1; 5 + 5; 'Hello world'; exFunc('a','b'); exam; 표현식은 자바스크립트 코드 중 값이 들어가는 곳이면 어디든 넣을 수 있다. 그래서 console.log의 인자는 콘솔이 로깅될 때 하나의 값으로 변한다. console.log(true && 1 * 5) // 5 표현식은 상태(State)를 바꿀 필요는.. 2020. 9. 16.
JavaScript - Function, Block, Lexical Scope Scope(스코프) 스코프는 '범위'라는 뜻을 가지고 있다. 자바스크립트에서 스코프란 변수에 접근할 수 있는 범위라 볼 수 있다. 자바스크립트에서 스코프는 2가지 타입이 존재한다. global Scope(전역 스코프) local Scope(지역 스코프) global Scope(전역 스코프) 전역 스코프는 전역에 선언되어 있어 어느 곳에서든 해당 변수에 접근할 수 있다는 의미이다. 즉, 변수가 모든 함수에 속하지 않고 {} 안에도 들어있지 않다면 이 변수는 전역 변수라 한다. 전역 변수를 선언하면, 함수 내부 또는 자바스크립트 코드 어디에서든 쓸 수 있다. let test = "Hello world" function a () { console.log(test); } console.log(test); // .. 2020. 9. 15.
JavaScript - == vs === vs Typeof == vs === === 자바스크립트에서 === 연산은 엄격한 동등성을 비교할 때 사용한다. 여기서 엄격한 동등성이란 타입과 값이 둘 다 같음을 의미한다. true를 만족하는 몇 가지 예를 들면 다음과 같다. 3 === 3 // 타입과 값이 같음 true 'abcd' === 'abcd' // 타입과 값이 같음 true true === true // 타입과 값이 같음 true false를 만족하는 몇 가지 예를 들어보면 다음과 같다. 33 === "33" // 숫자타입과 문자열타입 false "aaa" === "bbb" // 타입은 같지만 값이 다름 false false === 0 // 타입과 값 둘 다 다름 false ===은 타입과 값 모두 같아야 true를 반환한다. == 자바스크립트에서 == 연산자.. 2020. 9. 14.
JavaScript - Type Coercion(형 변환) 자바스크립트는 예상치 못한 타입을 받았을 때, 예상 가능한 타입으로 바꿔준다. 그로 인해 사용자는 숫자 값을 넘겨야 하는 곳에 문자열을 넣을 수도 있고 문자열을 넣아야 하는 곳에 객체를 넘길 수도 있다. 이런 일이 발생했을 때 자바스크립트 엔진은 사용자가 잘못 넣은 타입을 올바른 타입으로 변환하려고 시도한다. 형 변환은 자바스크립트의 주요한 기능이지만 피해야 할 기능이기도 하다. 1 + "1" + 1 // 111 2 * "2" // 4 true + true // 2 1 + false // 1 2 - true // 1 const a = { valueOf: () => 5 } 1 + a // 6 2 * a // 10 const b = { toString: () => " test: " } b + 1 // " t.. 2020. 9. 8.
JavaScript - 값 타입(Value Type)과 참조 타입(Reference Type) 자바스크립트는 값에 의한 전달(passed by value)이 일어나는 원시 타입(Primitive Types)과 참조에 의한 전달(passed by reference)이 일어나는 데이터 타입이 있다. 데이터 타입은 객체(Object)로 볼 수 있다. 원시 타입(Primitives) 원시 타입이 변수에 할당된다면, 그 변수를 원시 타입을 가진 변수라 생각할 수 있다. let a = 1; let b = 'bb'; let c = null; 이런 경우 a는 1이란 값을 가지고 있고, b는 'bb'라는 값을 가지고 있다. 이걸 메모리 상에 존재하는 변수들을 다음과 같이 표로 나타낼 수 있다. Variables Values a 1 b 'bb' c null 이 변수들을 다른 변수에 =를 이용해 할당할 때, 새로운 .. 2020. 9. 7.