🐊 spread & rest 🟢 spread 문법(Spread Syntax, ...) Spread 문법은 주로 배열을 풀어서 인자로 전달하거나, 배열을 풀어서 각각의 요소로 넣을 때 사용한다. (Spreed 문법의 대상은 이터러블이어야 한다. - 일반 객체는 이터러블이 아니기 때문에 Spread문법의 대상이 될 수 없다.) console.log(...['a', 'b', 'c']); // a, b, c console.log('I am inevitable'); // I am inevitable console.log(...{a:1, b:2}); // TypeError: Found non-callable @@iterator Spread문법(...)을 사용하면 배열을 인수로 함수에 전달하여 분해된 배열의 요소를 ..
“A closure is the combination of a function and the lexical environment within which that function was declared.” 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다. “ 함수와 레시컬 환경의 조합이다. ” 함수가 생성될 당시의 외부 변수를 기억하고 생성 이후에도 계속 접근이 가능한데, 이러한 함수를 클로저(closure)라고 부른다. 즉, 반환된 내부함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프) 밖에서 호출되어도 그 환경(스코프)에 접근할 수 있는 함수를 말한다. 이를 조금 더 간단히..
🤔 스코프 자바스크립트에서 스코프는 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다. 자바스크립트에서는 이 규칙대로 식별자를 찾는다. 우리가 변수를 선언하고 값을 할당하면, 변수는 전역 또는 코드 블럭이나 함수 내에 선언된다. (이때, 선언된 변수는 코드 블록이나 함수에서 중첩될 수 있다.) 식별자는 자신이 어디에서 선언됐는지에 따라 자신이 유효한 범위를 갖는다.(변수의 유효범위) 변수를 선언하면 변수에 접근할 수 있는 범위가 존재하게 되는데, 이 범위를 스코프(Scope)라고 부른다. ✏️ 스코프의 구분 자바스크립트에서 스코프는 2가지로 나눌 수 있다. 전역 스코프(Global Scope) : 코..
Javascript에서는 7가지 데이터 타입(number, string, boolean, null, undefined, symbol, object type)이 있다. 이 데이터 타입은 크게 원시 타입(primitive type)과 객체(참조)타입(object / reference type)으로 구분할 수 있다. ✏️ 원시 자료형 원시 자료형은 모두 '하나'의 정보, 즉 데이터를 담고 있다. 원시 자료형의 보관함인 변수에는 하나의 원시 자료형만 담을 수 있다. 이 특징은 참조 자료형이 보관되는 특별한 보관함과는 구분된다. 원시타입 데이터는 각 변수간에 원시타입 데이터를 복사할 경우, 데이터 값이 복사되기 때문에 기존의 데이터에 영향을 주지 않는다. 참조 자료형(배열, 객체)는 어떻게 코드를 작성하느냐에 따..
배열은 1개의 변수에 여러 개의 값을 순차적으로 저장할 때 사용한다.(배열은 순서에 대한 정보를 가지고 있는 참조형 데이터) 배열은 순서가 있는 요소들의 집합이다. 즉 여러개의 항목이 들어있는 리스트의 개념과 비슷하다. 자바스크립트의 배열은 Array 생성자로 생성된 Array 타입의 객체이다. "배열은 순서가 있는 값을 말한다." 📚 배열의 생성 📙 배열의 기터럴 배열은 0개 이상의 값(요소; element)을 쉽표(comma)로 구분하여 대괄호(square bracket; [])로 묶어서 만든다. . 이때 첫번째 값은 인덱스 '0'으로 읽을 수 있고 존재하지 않은 요소에 접근하면 'undefined'를 반환한다. ✏️ 순서는 인덱스라고 부르며, 1이 아닌 0부터 번호를 매김 ✏️ 값은 요소(eleme..
반복문은 주어진 조건식의 평가 결과가 참인 경우 코드 블럭을 실행한 후 조건식을 다시 검사하여 여전히 참인경우 코드 블록을 다시 실행하게 되는데, 이 조건식이 거짓일 때까지 반복된다. let sum = 1; sum = sum +2; sum = sum +3; sum = sum +4; "sum과 숫자(n)의 합"을 "sum에 대입"하자 ➜ sum = sum +n; 숫자(n)는 2부터 시작한다. ➜ let n = 2; 숫자(n)가 4가 될때까지 반복한다. ➜ n
🥴 문자열 🔍 템플릿 리터럴(Template literals) 템플릿 리터럴은 내장된 표현식을 허용하는 문자열 리터럴을 말한다. 따옴표 대신 백틱(` `)을 사용하여 홀더를 이용하여 표현식을 넣을 수 있는데, 이는 $와 중괄호({ })를 사용하여 표기할 수 있다. let hour = 12; let minute = 30; console.log(\`지금은 ${hour}시 ${minute}분 입니다.\`) 🔍 str[index] : String의 해당 index번째 문자 let str = 'Mother' console.log(str[0]) // 'M' console.log(str[1]) // 'o' console.log(str[3]) // 'h' // ❗️ note : index로 접근은 가능하지만 쓸 수는 ..
😀 조건문 조건문은 주어진 조건을 판별하는 기준에 따라 평가 했을 때, 그 결과에 따라 코드 불럭의 실행을 결정한다.(어떤 연산의 참, 거짓에 따라서 다른 명령을 각각 취할 수 있도록 해줌) 조건문에는 반드시 비교 연산자(comparison operator)가 필요하다. - 비교의 결과는 늘 Boolean,즉 true 혹은 false 이다. 📁 조건식은 비교 연산자를 사용한다. 비교연산자 예 설명 a > b a가 b보다 크다 = b a가 b보다 같거나 크다 === a === b a와 b의 값은 (타입이) 같다 !== a !== b a와 b의 값은 (타입이) 다르다 ❗️ 아래 연산자는 타입을 엄격하게 비교하지 않는다.(쓰지 않기!) == : 같다 != : 다르다 1 == '1' // true null ==..
함수란 어떤 작업을 수행하기 위해 필요한 문들의 집합을 정의한 코드 블록이다.(입력에 따라 그에 걸맞은 작업을 하는 하나의 작업 단위) 함수는 입력값을 설정할 수 있고 항상 출력값을 반환(return)한다. (만약 함수 내부에서 return 문을 사용하지 않았다면 undefined를 반환한다.) 함수는 이름과 매개변수를 갖으며 필요한 때에 호출하여 코드 블록에 담긴 문들을 일괄적으로 실행 할 수 있다. 함수가 호출되면 특별 보관함에 저장된 함수의 코드가 조회된다. 함수 코드의 body에 등장하는 parameter들은 함수 호출 시 전달된 인자의 값으로 바뀌고 함수가 순차적으로 실행된다. 함수가 값을 return하면 호출된 장소로 돌아가 함수 호출 값을 리턴 값으로 바꾼다. - 코드의 묶음이다.(즐겨찾기 ..
Data Types 데이터타입은 프로그래밍 언어에서 사용할 수 있는 데이터(숫자, 문자열, 불리언 등)의 종류를 말한다. 데이터 타입은 한정된 메모리 공간을 효율적으로 사용하기 위해 존재한다. Primitive Data Type(원시타입 / 내장형, 기본형 타입) : 한번에 하나의 값만을 가질 수 있고 하나의 고정된 저장 공간을 이용한다. · Number · String · Boolean · Undefined · Null 1️⃣ Number(숫자열) let age = 16; // 정수 let tall = 175.2; // 실수 let inf = Infinity; // 무한대 let minusInf = -Infinity; // 음의 무한대 let nan = NaN; // 산술 연산 불가, 수학적인 연산..