
📖 오늘의 공부 📖
- Javascript Handbook
- Part 01. Hello World
- Part 02. 조건문
- Part 03. 배열과 반복문
- 참고
let : 변수 생성(선언)var를 사용하기도 함)= (할당 연산자) : 변수 안에 데이터 저장,(콤마)$, _)만 가능let, class, fuction 등)const : 변화하지 않는 변수 선언하기(let 대신 사용)(javascript : 8가지 기본 자료형)
1) 숫자형(number type)
*(곱), /(나누기), +(덧셈), -(뺄셈) 등Infinity, -Infinity, NaNInfinity : 무한대 ∞ (어떤 숫자든 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 != b1) 문자열 비교
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, includes3) 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)- 결론
📖 아하... 폴더 명에 공백 있으면 안되는구나...