[TIL] 스터디키워드 정리 (데이터 타입, 변수, 함수, 조건문, 배열)
2주차 스터디 키워드
1) 변수가 필요한 이유와 선언하는 방법
- 수많은 데이터를 효율적으로 기억하고, 적절한 시점에 꺼내 활용하기 위해 변수가 필요하다.
- 변수를 선언할 수 있는 키워드에는 const, let, var 3가지가 존재한다.
- 선언 방법은 let 변수명 = "" 식으로 변수를 선언할 수 있다.
참고) const, let, var의 차이점
- let
- 자바스크립트에서 변수를 선언한 후에도 변수값을 변경할 수 있는 키워드
- var는 더이상 쓰지 않는다!
- 왜?
- 대부분의 프로그래밍 언어에서는 변수를 선언한 뒤 값을 할당하는게 정상적인 순서다.
- [이유 1] 그러나 자바스크립트 var의 경우 변수를 선언하기 전에 값을 할당해도 정상적으로 작동한다. 이는 var hoisting 때문이다.
- [이유 2] var는 block scope이 없어 블럭을 무시한다.
- 여기서 호이스팅(Hoisting)이란?
- 호이스팅이란 어디에 선언했는지와 상관 없이 항상 제일 위로 선언을 끌어올려주는 것이다. (Moving declaration from bottom to top)
- 왜?
- constant
- 값을 한번 선언한 뒤 그 값을 변경할 수 없다. (immutable data type)
- constant의 좋은 점 3가지
- 보안성(security) : 해커들이 코드를 삽입해 값을 계속 변경하는 것을 방지
- Thread safety : 앱이 실행되면 하나의 프로세스가 할당되고, 그 프로세스 안에서는 다양한 thread가 동시에 돌아가면서 어플리케이션을 조금 더 빠르게 효율적으로 동작할 수 있도록 도와준다. 그런데 다양한 thread들이 동시에 변수에 접근해 값을 변경할 수 있는데 동시에 값을 변경하는 것은 위험하다.
- Reduce human mistakes : 변경할 이유가 없다면 되도록이면 되도록 const를 사용하는 게 좋다. 나중에 코드를 변경하거나 다른 개발자가 코드를 바꿀 때도 실수를 방지해준다.
2) 자바스크립트 데이터 타입의 종류
- 총 7가지의 데이터 타입이 존재하며 그 종류는 하기와 같다.
- string, number, boolean, undefined, null, object, symbol
- string : 문자열 데이터
- number : 숫자 데이터 (모든 숫자를 실수로 처리한다.)
- boolean : 논리요소로 참, 거짓을 나타낸다.
- undefined : undefined는 선언은 됐지만 아직 value가 할당되지 않은 경우
- null : 의도적으로 '빈 값'을 할당한 경우
- object : 여러 종류의 데이터를 묶음으로 관리하는 데이터 타입 (array와 비슷하나 {키(key) : 값(value)} 형태로 이루어져 있다.)
- symbol : Map이나 다른 자료구조에서 고유한 식별자가 필요하거나 동시다발적으로 일어날 수 있는 코드에서 우선순위를 주고 싶을 때 쓰인다. 👈 이 개념은 잘 모르겠다.
3) number와 string의 메서드 각각 3개와 사용 방법
a) number 메서드
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number
- Number.parseFloat() : 문자열을 파싱(parsing)하여, 문자열에 포함된 숫자 부분을 실수 형태로 반환한다.
- Number.parseInt() : 문자열에 포함된 숫자 부분을 정수 형태로 반환한다.
- Number.isNaN() : 전달된 값이 NaN인지 아닌지를 검사한다.
Number.parseFloat("12"); // 12
Number.parseFloat("12.34"); // 12.34
Number.parseInt("12"); // 12
Number.parseInt("12.34"); // 12
b) string 메서드
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String#%EC%A0%95%EC%A0%81_%EB%A9%94%EC%84%9C%EB%93%9C
- String.fromCharCode() : 쉼표로 구분되는 일련의 유니코드에 해당하는 문자들로 구성된 문자열을 반환함.
- String.fromCodePoint() : 쉼표로 구분되는 일련의 코드 포인트(code point)에 해당하는 문자들로 구성된 문자열을 반환함.
- String.raw() : 템플릿 문자열(template string)의 원형을 반환함.
4) 함수가 필요한 이유
- 하나의 태스크를 수행하거나 연산을 위해 사용하며 재사용이 가능한 기능을 수행하기 위해서 사용한다.
- 각 명령의 시작과 끝을 명확하게 알 수 있다.
- 자주 실행하는 기능에 포함된 명령어가 여러가지일 때 그 명령을 한번에 실행할 수 있다.
5) 함수의 정의와 호출의 차이점
a) 함수의 정의(선언) :
함수를 호출하기 전 함수 실행문(statement)와 반환할 값을 지정하는 것을 말한다.
함수는 선언만으로는 실행되지 않고 호출이 돼야만 동작한다.
b) 함수의 호출:
정의된 함수를 실제로 실행시키는 것을 말한다.
6) 조건문이 필요한 이유
- 특정 조건에 맞는 코드만 실행시킬 수 있다.
7) 배열이 필요한 이유와 선언하는 방법
- 배열은 하나의 변수에 여러 값을 저장하는 유형이며 여러 변수의 집합이다.
- 데이터를 대량 연산할 때 유용하게 사용할 수 있어 사용된다.
- 배열을 선언하는 방법 (참고블로그)
- 대괄호[]를 사용하여 선언하기
- new Array() 사용하여 배열 선언하기
8) 배열의 값을 추가, 수정, 삭제하는 방법
a) 배열 값 추가
- Array.push() - 배열의 끝에 요소를 추가
- Array.unshift() - 배열의 앞에 요소를 추가
- Array.splice() - array.splice("위치", 0, ["요소1", "요소2" ... ])
b) 배열 값 수정
- Array.slice(start, end) - arr.slice([begin[, end]])
c) 배열 값 삭제
- Array.pop() - 배열의 마지막 요소를 제거
- Array.shift() - 배열의 첫번째 요소를 제거
- Array.splice() - array.splice("시작위치", "제거건수")
9) 반복문이 필요한 이유와 사용하는 방법
- 반복적인 작업을 원하는 횟수만큼 실행시킬 수 있다.
10) 배열과 반복문을 함께 자주 사용하는 이유
- 특정 배열에 포함된 값들을 반복문을 통해 실행시킬 수 있다.
11) 배열의 메서드 5가지와 사용 방법
- 상단에서 배열 값 추가/수정/삭제 방법 기재함
12) 객체란 무엇이며 필요한 이유
- array와 동일하게 여러 종류의 데이터를 묶음으로 관리하는 데이터 타입이다.
- 배열은 요소들은 인덱스로만 구분하지만, 객체는 속성을 나타내는 키와 그에 대한 값으로 구성되기 때문에 데이터를 더욱 직관적으로 저장하고 불러올 수 있다.
13) 객체에서 property, key, value
14) 객체에 접근 하는 두 가지가 있는 이유
객체에 접근하는 방식은 Dot Notation와 Bracket Notation 두가지가 있다.
- Dot Notation : Object.key 식으로 표현한다.
- Bracket Notation : Object['key']식으로 표현한다.
- Dot Notion의 경우 숫자로 시작하는 키에 접근할 수 없으며, 띄어쓰기가 포함된 키에는 접근할 수 없어 그런 경우 Bracket Notation을 사용한다.
- 더불어 Brackeet Notation 안에는 변수가 들어갈 수 있다.
15) 객체의 값을 추가,수정, 삭제하는 방법
a) 객체 값 추가
- 객체["속성"] = 속성값;
- 객체.속성 = 속성값;
b) 객체 값 수정
- 객체["속성"] = 새속성값;
- 객체.속성 = 속성값;
c) 객체 값 삭제
- delete 객체["속성"]
- delete 객체.속성;
- 위 방식에 따라 속성과 값을 모두 삭제한다.
16) 객체와 배열이 섞인 복잡한 객체 만들어서 접근하는 방법
17) 배열의 타입이 객체인 이유