📖 오늘의 공부 📖
- Javascript Handbook
- Part 01. Hello World
- Part 02. 조건문
- Part 03. 배열과 반복문
- 참고
let
: 변수 생성(선언)var
를 사용하기도 함)=
(할당 연산자) : 변수 안에 데이터 저장,
(콤마)$
, _
)만 가능let
, class
, fuction
등)const
: 변화하지 않는 변수 선언하기(let
대신 사용)(javascript : 8가지 기본 자료형)
1) 숫자형(number type)
*
(곱), /
(나누기), +
(덧셈), -
(뺄셈) 등Infinity
, -Infinity
, NaN
Infinity
: 무한대 ∞
(어떤 숫자든 0으로 나눌 경우)NaN
: 계산 중 에러 발생(부정확하거나 정의되지 않은 수학 연산 사용할 경우)2) BigInt
3) 문자형(string)
''
, ""
, \
``)${ }
사용하여 원하는 변수나 표현식을 문자열 중간에 손쉽게 넣을 수 있습4) 불린형(boolean)
true
(긍정), false
(부정)5) null
값
6) undefined
값
7) 객체(object)와 심볼(symbol)
8) typeof
연산자
1) 문자형으로 변환
string(value)
함수 호출2) 숫자형으로 변환
number(value)
함수 호출NaN
전달받은 값 | 형 변환 후 |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 과 0 |
string | 문자열의 처음과 끝 공백이 제거됨 |
3) 불린형으로 변환
true
, false
값으로 변환함Booleaan(value)
호출전달받은 값 | 형 변환 후 |
---|---|
0, null, undefined, NaN, "" | false |
그 외의 값(" "(공백), "0"도 포함) | true |
2) 연산자
3) 이항 연산자 '+'와 문자열 연결
4) 단항 연산자 '+'와 숫자형으로의 변환
5) 연산자 우선순위(precedence)
6) 복합 할당 연산자
let n = 2;
n += 5; (n = n + 5와 동일) // n은 7이 됨
n *= 2; (n = n * 2와 동일) // n은 14가 됨
alert(n); // 14
1) 들어가기 앞서
2) 연산자
3) 이항 연산자 '+'와 문자열 연결
4) 단항 연산자 '+'와 숫자형으로의 변환
5) 연산자 우선순위(precedence)
6) 복합 할당 연산자
let n = 2;
n += 5; (n = n + 5와 동일) // n은 7이 됨
n *= 2; (n = n * 2와 동일) // n은 14가 됨
alert(n); // 14
true
, false
)을 반환함==
을 씀(=
는 할당 연산자)a != b
1) 문자열 비교
2) 다른 형 간의 비교
let a = 0;
alert( Boolean(a) ); // false
let b = "0";
alert( Boolean(b) ); // true
alert(a == b); // true!
-> 비교 연산자 == 는 숫자형으로 변환 후 비교함
-> "0"도 0으로 변환 후 비교하기 때문에 a==b는 true
3) 일치 연산자(strict equality operator)
===
alert( 0 === false );
alert( null === undefined ); // false
alert( null == undefined ); // true
if (...)
: 결과를 불린값으로 변환else
절 : false일 때 실행됨else if
: 복수 조건 처리하기?
let result = condition ? value1 : value2;
순서가 있는 자료를 저장하고 관리하는 용도에 최적화된 특수한 자료구조
1) 배열 선언
// 대괄호 (가장 많이 쓰이는 방법임)
let arr = [item1, item2...];
// new Array (잘 쓰이지 않음)
let arr = new Array(item1, item2...);
let fruits = ["사과", "오렌지", "자두"];
fruits[2] = '배'; // 배열이 ["사과", "오렌지", "배"]로 바뀜
fruits[3] = '레몬'; // 배열이 ["사과", "오렌지", "배", "레몬"]으로 바뀜
length
프로퍼티**2) pop, push와 shift, unshift
큐(queue)
스택(stack)
배열 끝에 무언가를 해주는 메서드
pop
: 배열 맨 끝 요소를 제거하고, 제거한 요소를 반환push
: 배열 맨 끝에 요소 추가배열 앞에 무언가를 해주는 메서드
shift
: 배열 맨 앞 요소 제거하고, 제거한 요소를 반환unshift
: 배열 맨 앞에 요소 추가요약 : 배열의 맨 앞이나 맨 끝에 요소 추가, 제거 메서드
|요소|기능|
|:---------|:--------|
|arr.push(...items)|맨 끝에 요소 추가|
|arr.pop()|맨 끝 요소 제거|
|arr.shift()|맨 앞 요소 제거|
|arr.unshift(...items)|맨 앞에 요소 추가|
3) 다차원 배열
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
alert( matrix[1][1] ); // 5, 중심에 있는 요소
1) 요소 추가, 제거 메서드
arr.splice( )
: 요소 추가, 삭제, 교체가 모두 가능arr.splice(index[, deleteCount, elem1, ..., elemN])
index
: 첫 번째 요소를 가리킴
deleteCount
: 제거하고자 하는 요소의 개수
elem1, ..., elemN
: 배열에 추가할 요소
ex 1)
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // 인덱스 1부터 요소 한 개를 제거
alert( arr ); // ["I", "JavaScript"]
let arr = ["I", "study", "JavaScript", "right", "now"];
// 처음(0) 세 개(3)의 요소를 지우고, 이 자리를 다른 요소로 대체합니다.
arr.splice(0, 3, "Let's", "dance");
alert( arr ) // now ["Let's", "dance", "right", "now"]
deleteCount
0으로 설정 : 요소를 제거하지 않으면서, 그 자리에 새로운 요소 추가 가능
음수 인덱스 사용 가능(맨 끝부터 -1, 순서가 왼쪽으로 -1씩 증가)
slice
arr.slice([start], [end])
start
(end
를 제외한) end
인덱스까지의 요소를 복사한 새로운 배열을 반환-arr.concat
: 새로운 배열을 만들거나 기존 배열에 요소를 추가할 때 사용
2) 배열 탐색 메서드
indexOf
, lastIndexOf
, includes
3) forEach로 반복작업 하기
arr.forEach(function(item, index, array) {
// 요소에 무언가를 할 수 있습니다.
});
1) while
반복문
while (condition) {
// 코드
// '반복문 본문(body)'이라 불림
}
- condition(조건)이 truthy 이면 반복문 본문의 코드가 실행
<br>
**2) `do...while` 반복문**
- 각 반복이 끝난 후에 조건을 확인
- 문법
```javascript
do {
// 반복문 본문
} while (condition);
3) for
반복문
for (begin; condition; step) {
// ... 반복문 본문 ...
}
4) 반복문 빠져나오기 break
- 유사한 동작을 하는 코드가 여러 곳에 필요할 때, 중복 없이 유사한 동작하는 코드를 여러 번 호출할 수 있음
- 중요 용도는 '중복 코드 피하기'!!
function showMessage() {
alert('안녕하세요');
}
😮 오늘의 발견
개인 토이프로젝트 github 배포하려고 파일을 올렸는데 계속 404 File not found 에러가 떴다.
stack overflow도 확인해보고, 댓글에 올라와있는대로 수정도 해보다가 겨우 해결했다.
- 시도 방법
1) 파일 이름 수정 Wedding_Invitation -> _삭제 (실패)
2) 파일 이름 index로 수정 (실패)
3) 파일 이름 index.html로 수정 (실패)
4) 파일 이름 index로 유지, 폴더 명 변경 (성공!)
(Wedding Invitation -> WeddingInvitation)- 결론
📖 아하... 폴더 명에 공백 있으면 안되는구나...