TIL 220118

김상한·2022년 1월 18일
0

Today I Learned

목록 보기
1/9

변수

프로그래밍 세계에서 변수는 '이름이 붙은 값'이라 정의할 수 있다.
변수명에는 공백이 있을 수 없어 각 단어의 첫글자는 대문자로 처리해준다.(Camel Case)
모든 변수명은 대소문자를 구분한다. myname과 myName은 다른 변수인 것이다.
변수가 사용되기 위해서는 선언과 할당이 이루어져야 한다.
하나의 변수에 대해 선언은 처음 1회만 가능하다.
할당은 해당 변수에 특정 값을 대입한다는 의미이고 이 때 할당연산자로 '='을 활용한다. 이 때의 '='이 같다는 의미가 아닌 할당의 의미인 것을 주의하여야 한다.
할당이 되지 않은 변수는 그 자체로 'undefined'라는 값을 갖는다.

타입

JavaScript 언어의 타입은 원시 값과 객체로 나뉜다.
원시 값의 타입은 다음과 같다.
1. Boolean타입 : 논리 요소를 나타내며 true 혹은 false를 리턴한다. (값이 없거나 0, -0, null, false, NaN, undefined, 빈 문자열 ("")이라면 객체의 초기값은 false가 된다.) 주의할 점은 문자열로 나타낸 'false'의 Boolean값은 true이다.
2. Null 타입 : null 하나의 값만 가지며 null은 어떤 값이 의도적으로 비어있음을 표현한다.
3. Undefined 타입 : 값을 할당하지 않은 변수는 undefined 값을 가진다.
4. Number 타입 : Number와 Bigint로 나뉘며 Number는 -Infinity~+Infinity 까지 모든 숫자를 포함한다. BigInt는 임의의 정밀도로 정수를 나타낼 수있다. 정수 뒤에 n을 추가하는 형식으로 활용한다. 검색을 해보니 근사값과 유사한 느낌이었다. 주의할 점은 Number와 Bigint를 혼합한 연산은 할 수 없다는 점이다.
5. String 타입 : 흔히 말하는 text 데이터라고 받아들이면 된다.
6. Symbol 타입 : 고유하고 변경 불가능한 원시 값이며 객체의 속성 키로 사용할 수 있다. 그래서 symbol은 유일한 식별자를 만들고 싶을 때 사용한다.
7. 객체 타입 : 객체는 뒤에서 중요하게 다루는 시간이 있기 때문에 그 때 다시 볼 계획이다.

함수

JS에서 함수를 나타내는 3가지 방식을 비교해보자.

함수 선언식

function getRectangleArea (width, height) {
let rectangleArea = width * height
return rectangleArea
}

선언식은 let/var/const 대신 function으로 시작하며 함수를 나타내는 방식 중 유일하게 호이스팅이 된다는 특징이 있어 오류를 유발하는 상황이 적다는 장점이 있다.

함수 표현식

let getRectangleArea = function (width, height) {
let rectangleArea = width * height
return rectangleArea
}

표현식은 let/var/const로 함수를 선언하며 인터프리터가 해당 코드 줄에 도착할 때 실행된다. 함수 표현식은 함수 이름이 필요없기 때문에 가독성이 좋다는 장점이 있다.

함수 표현식 (화살표 함수 - 1)

let getRectangleArea = (width, height) => {
let rectangleArea = width * height
return rectangleArea
}

화살표 함수는 표현식과 동일하게 let/var/const로 함수를 선언하며 구조가 간결하여 복잡한 상황에서 쓰기가 편하다.

함수 표현식 (화살표 함수 - 2)

let getRectangleArea = (width, height) => width * height

화살표 함수는 뒤에 return문만 쓸 경우에 {}와 return을 동시에 생략할 수 있다.

호이스팅

호이스팅은 코드가 실행하기 전 변수선언/함수선언 이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상을 말한다.
JS에서는 모든 선언에 대해 호이스팅이 발생하지만 변수가 선언되고 초기화되는 과정이 코드 실행 전에 이루어지는 var과 함수 선언문만 오류 없이 작동한다.
let,const,class 등의 선언은 선언 자체는 코드 실행 전에 메모리에 저장되지만 초기화는 해당 위치에 도달했을 때 이루어지기 때문에 호이스팅이 되지 않은 것처럼 오류를 유발한다.
변수는 선언-초기화-할당 세 가지 단계로 생성되는 데 호이스팅이 오류 없이 이루어지려면 선언과 초기화가 코드 실행 전에 이루어져야 하는 것이다.

조건문

조건문은 어떠한 조건을 판별하는 기준을 만드는 것으로 반드시 비교연산자가 필요하다.
비교연산자로는 대소 비교(<,>) 일치 여부(==, === , !=, !==)가 있다.
주의할 점은 ===은 값과 타입이 완전히 일치하여야 true를 리턴하지만 ==는 타입은 다르지만 값이 같을 경우 true를 리턴하기도 한다. ===이 더 엄격한 비교라고 할 수 있다. (!==도 마찬가지)

0 == '0'
true
0 === '0'
false

profile
성장하는 사람

0개의 댓글