자바스크립트
2-18. break 와 continue
break 문으로 반복문 멈추기
let i = 0;
while (true) {
if (i === 5) break;
i++;
}
while 문과 for 문 비교
while 문
let i = 0;
while (true) {
console.log(i);
i++
}
for 문
for (let i = 0; ; i++) {
console.log(i);
}
for 문은 조건식이 생략되어 무한 반복된다. 하지만 보통은 조건식을 잘 생략하지 않기 때문에 어색해보일 수 있다.
그래서 언제 끝날지 모르는 반복문이나 무한 반복을 표현할 때는 while 문을 더 많이 쓴다.
continue 문으로 코드 실행 건너뛰기
continue 문을 넣으면 이후 코드는 건너뛰게 된다.
let i = 0;
while (i < 10) {
i++;
if (i % 2 === 0) {
continue;
}
console.log(i);
}
2-19. 중첩 반복문
중첩된 반복문 사용하기
반복문 안에 반복문이 있는 경우 반복문이 중첩됐다고 표현한다.
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(i, j);
}
}
2-20. 별찍기
*
**
***
****
*****
for (let i = 0; i < 5; i++) {
console.log('*'.repeat(i + 1))
}
*****
****
***
**
*
for (let i = 5; i >= 1; i = i - 1) {
console.log('*'.repeat(i))
}
for (let i = 0; i < 5; i = i++) {
console.log('*'.repeat(5 - i))
}
*
***
*****
*******
*********
*********
*******
*****
***
*
*****
****
***
**
*
*
**
***
****
*****
2-21. 배열 기본
객체
객체(object) 는 자료형의 일종으로 다양한 값을 모아둔 또다른 값이다. 객체의 종류는 크게 배열(array), 함수(function), 배열이나 함수가 아닌 객체로 나눌 수 있다.

배열
배열을 사용해 값들을 하나로 묶을 수 있다
const fruits = ['사과', '오렌지', '배', '딸기'];
네개의 과일을 fruits 라는 상수로 묶었다. 배열을 만들려면 대괄호로 값들을 감싸주면 된다. 값은 쉼표로 구분한다.
배열 이름 뒤에 불러오고 싶은 값의 자릿수를 적어주면, 배열 내부의 값을 개별적으로 불러올 수 있다.
const fruits = ['사과', '오렌지', '배', '딸기'];
console.log(fruits[0]);
console.log(fruits[1]);
console.log(fruits[2]);
console.log(fruits[3]);
자릿수는 0부터 시작한다. 프로그래밍에서는 자릿수를 인덱스(index) 라고 한다.
배열 안에 있는 값의 자료형이 모두 같아야 할 필요는 없다. 배열 안에 다른 배열이나 변수를 넣을 수도 있다.
const arrayOfArray = [[1, 2, 3], [4, 5];
arrayOfArray[0]; // [1, 2, 3]
const a = 10;
const b = 20;
const variableArray [a, b, 30];
variableArray[1]; // 20 (b 의 값)
배열 내부에 배열이 들어있는 것을 이차원 배열이라고 한다.
배열 내부의 값은 중복되어도 되고, 아무 값이 없는 배열도 만들 수 있다.
const everything = ['사과', 1, undefined, true, '배열', null];
const duplicated = ['가', '가', '가', '가', '가'];
const empty = [];
배열 내부에 든 값을 요소(element) 라고 한다. everything 배열에는 6개의 요소가 있고, empty 배열에는 0개의 요소가 있다.
배열의 요소 갯수 구하기
배열 이름 뒤에 .length 를 붙이면 배열의 요소 갯수를 구할 수 있다.
const everything = ['사과', 1, undefined, true, '배열', null];
console.log(everything.length);
빈 값도 유효한 값이기 때문에 요소 개수를 셀 때 포함된다.
const emptyValue = [null, undefined, false, '', NaN];
console.log(emptyValue.length);
배열의 요소 개수를 활용해 원하는 인덱스 요소를 찾을 수 있다. 배열의 요소 개수는 항상 마지막 인덱스보다 1 크다.
배열의 요소 갯수에서 1을 빼면 마지막 요소의 인덱스가 된다.
const findLastElement = ['a', 'b', 'c', 'd', 'e'];
console.log(findLastElement[findLastElement.length - 1]);
마지막 요소 다음 요소를 추가하려면 배열.length 에 값을 넣으면 된다
const target = ['가', '나', '다', '라', '마'];
target[target.length] = '바';
console.log(target);
배열[0] = 값 이라고 입력하면 첫번째 값이 ‘수정’ 된다.
const target = ['나', '다', '라', '마', '바']
target[0] = '가';
console.log(target);
// ["가", "다", "라", "마", "바"]
배열의 제일 앞에 값을 추가하고 싶다면 unshift 라는 기능을 실행하면 된다.
const target = ['나', '다', '라', '마', '바'];
target.unshift('가');
console.log(target);
주어진 값이 배열의 첫 번째 요소로 추가되고, 다른 요소들의 인덱스는 하나씩 뒤로 밀린다.
제일 뒤에 요소를 추가하는 방법으로 배열[배열.length] = 값 방식으로도 가능하지만, 배열 자체에서 값을 추가하는 push 기능이 있다.
const target = ['가', '나', '다', '라', '마'];
target.push('바');
target 변수가 const 인데 수정이 가능한 이유는?
const 는 엄밀히 상수는 아니다. const 에는 새로운 값을 대입(=)하지만 못한다고 생각하면 된다.
const 에 객체(배열, 함수, 객체 리터럴)가 대입된 경우 객체 내부의 속성이나 배열의 요소는 수정할 수 있다.
const target2 = ['a', 'b', 'c', 'd', 'e'];
target2 = ['f', 'g']; // 불가능
target2[0] = 'h'; // 가능
2-22. 배열 메서드(수정, 조회)
배열의 요소 수정하기
원하는 인덱스에 바꿀 값을 넣어주면 된다.
const target = ['가', '나', '다', '라', '마'];
target[3] = '카';
console.log(target);
배열에서 요소 제거하기
pop 을 사용하면 마지막 요소가 제거된다.
const target = ['가', '나', '다', '라', '마'];
target.pop();
shift 를 쓰면 첫 번째 요소를 제거할 수 있다.
const target = ['가', '나', '다', '라', '마'];
target.shift();
splice 기능을 사용해서 중간 요소를 제거할 수 있다.
const target = ['가', '나', '다', '라', '마'];
target.splice(1, 1);
splice(지울 인덱스 위치, 지울 요소 개수). 인덱스 1부터 1개를 지우겠다는 의미이다.
인덱스가 0부터 시작한다는 것에 유의해야한다.
splice 에 값을 하나만 넣으면 해당 인덱스부터 끝까지 모든 요소를 제거하겠다는 뜻이다.
const target = ['가', '나', '다', '라', '마'];
target.splice(1);
console.log(target);
// ["가"]
splice 로 값을 지우면서 지워진 자리에 다른 값을 넣을 수도 있다.
splice 의 세 번째 자리부터 바꿀 값들을 넣어준다.
const target = ['가', '나', '다', '라', '마'];
target.splice(1, 3, '타', '파');
하나도 지우지 않고 끼워넣을 수도 있다.
const target = ['가', '나', '다', '라', '마'];
target.splice(1, 0, '바')
// ["가", "바", "나", "다", "라", "마"]
배열에서 요소 찾기
배열에서 특정 요소가 있는지 찾아보는 일종의 검색 기능이다. includes 기능을 사용한다.
요소가 있으면 true, 없으면 false 가 반환된다.
const target = ['가', '나', '다', '라', '마'];
const result = target.includes('다');
const result2 = target.includes('카');
console.log(result);
console.log(result2);
// true
// false
indexOf 와 lastIndexOf 를 사용하면 검색하고 싶은 값이 몇 번째 인덱스에 위치하는지 알 수 있다.
const target = ['라', '나', '다', '라', '다'];
const result = target.indexOf('다');
const result2 = target.lastIndexOf('라');
const result3 = target.indexOf('가');
// 2
// 3
// -1
indexOf 는 앞에서부터 찾고, lastIndexOf 는 뒤에서부터 찾는다. 없으면 -1
배열 반복하기
배열은 값들을 나열한 것이기 때문에 반복문과 같이 사용하는 경우가 많다.
배열의 모든 요소를 console.log 해보자. while 문이나 for 문 모두 사용할 수 있다.
const target = ['가', '나', '다', '라', '마'];
let i = 0;
while (i < target.length) {
console.log(target[i]);
i++;
}
/*
가
나
다
라
마
*/
for 문
const target = ['가', '나', '다', '라', '마'];
for (let i = 0; i < target.length; i++) {
console.log(target[i]);
}
2-23. 배열 메서드 응용하기
배열에서 ‘라’를 모두 제거하기
indexOf 로 ‘라’ 를 찾은 다음, splice 를 이용해서 찾은 인덱스 위치를 이용해서 하나씩 지우기를 반복
- 언제까지 반복할 것인지 = (arr.indexOf(’라’) > -1)
const arr = ['가', '라', '다', '라', '마', '라']
while (arr.indexOf('라') > -1) {
arr.splice(arr.indexOf('라'), 1)
}
// 중복되는 코드 없애주기
let index = arr.indexOf('라');
while (index > -1) {
arr.splice(index, 1);
index = arr.indexOf('라'); // 중요. 빼먹지 않기
}
indexOf 로 값이 존재하는지 안하는지를 조건문에 넣었을때, 첫번째 자리면 0이 나오는데 0을 형변환하면 false 가 나오므로 원하는 값이 안나올 수 있다.
if (arr.index(1) > -1) {}
조건문에 넣을때는 첫자리인 0 을 고려해서 -1 보다 클때를 true 로 반환하도록 만들자
2-24. 함수 기본
함수
프로그래밍에서 함수(function)는 일정한 동작을 수행하는 코드를 의미한다. 함수를 미리 만들어두고 원할 때 실행해 정해진 동작을 수행하게 할 수 있다.
함수를 만들 때는 보통 function 예약어를 사용하거나 =>(화살표) 기호를 사용한다. 화살표 기호를 사용한 함수를 화살표 함수(arrow function)라고 한다.
function() {}
// 또는
() => {}
함수에 이름을 붙여보자
function a() {} // 함수 선언문
const b = function() {}; // 함수 표현식
const c = () => {}; // 화살표 함수
두 번째와 세 번째는 각각 상수 b 와 c 에 대입했다. 이렇게 대입하면 상수 또는 변수의 이름이 함수의 이름이 된다. 함수 a 는 특별하게 상수에 대입하지 않았는데, 이렇게 함수를 상수에 대입하는 대신 function 키워드 뒤에 함수 이름을 넣어주는 방식을 함수 선언문(function declaration statement) 이라고 한다.
반대로 함수 b 와 같이 상수나 변수에 대입하는 방식을 함수 표현식 (function expression) 이라고 한다.
여기에 화살표 함수까지 포함해 함수를 만드는 방식은 크게 세가지라고 보면 된다.
변수와 마찬가지로 함수를 만드는 행위도 선언한다(declare)고 표현한다.
왜 함수 a 뒤에는 세미콜론은 안붙이는가?
변수 선언문 외에 ‘문’ 즉 if, for, while, 함수 선언문 뒤에는 세미콜론을 붙이지 않는다.
관습적인것으로 햇갈린다면 붙여도 괜찮다.
그리고 붙여서 에러나는 경우는 없는데 안붙여서 에러나는 경우는 생길 수 있으므로 붙이는 것을 추천한다.
function a() {} // 선언
a(); // 호출
함수를 사용하는 행위를 호출한다(call) 고 표현한다.
함수 a를 선언한 후 a 뒤에 ()를 붙이면 함수가 실행된다.
지금까지 console.log 나 parseInt 같은 명령 뒤에도 ()를 붙여 사용했는데, console.log 와 parseInt 도 함수이기 때문이다
함수안에 동작문을 넣어보자. 함수의 중괄호 안에 실행할 코드를 넣어주면 된다.
function a() {
console.log('Hello');
console.log('Function');
}
a();
함수 안에서 함수를 다시 호출할 수 있다.
이름을 안붙인 함수를 익명함수라고 하는데, 한번밖에 못쓰므로, 한번만 쓸지, 여러번 쓸지 결정해서 이름을 붙여줘야한다.
return 이해하기
function a() {}
//< undefined
a();
//< undefined
함수를 선언할 때 undefined 가 나오는 것은 신경쓰지 않아도 된다. 함수 a 를 호출할 때 (a();) 결괏값이 undefined 라는 것에 주목해야한다. 함수를 호출하면 항상 결괏값이 나오는데, 기본값으로 undefined 가 나온다.
이 값을 반환값(return value) 라고 한다. console.log 를 호출할 때마다 콘솔에 undefined 가 출력되는 것은 console.log 함수의 반환값이 undefined 라서 그렇다.
function c() {
return 'hello';
console.log('hi');
}
function d() {
return undefined;
}
function e() {
return;
}
return 값을 정해서 반환값을 정해줄 수 있다. 함수가 기본적으로 undefined 를 반환하는 것은 return undefined; 이라는 코드가 기본적으로 내장되어 있음을 생각할 수 있다. return 만 쓰고 undefined 가 생략되어도 똑같이 반환된다.
return 은 함수를 종료시키므로 return 뒤에 코드를 넣으면 실행되지 않는다.
function a() {
return 10;
}
console.log(a());
함수를 호출한다는 것은 리턴값을 거기 넣어준다고 생각할 수 있다.
function a() {
return 1, 5; // 잘못된 방법 5만 리턴된다.
}
function a() {
return [1, 5]; // 배열로 반환할 수 있다.
}
한번에 여러 값을 리턴하고 싶다면, 리턴 값은 하나이기 때문에, 하나로 묶어서 리턴해줘야 한다.
2-25. 매개변수와 인수
매개변수와 인수 사용하기
function a(parameter) {
console.log(parameter);
}
a('argument');
// < argument
a 호출 시 소괄호에 넣은 ‘argument’ 문자열은 함수 a를 선언할 때 소괄호에 넣은 parameter 와 연결된다. 따라서 parameter 는 ‘argument’ 의 값을 가진다. parameter = ‘argument’ 와 같고, 실제로 parameter 는 변수와 같은 특성을 가진다.
함수가 하나의 매개변수와 하나의 인수만을 가지는 것은 아니다. 각각 여러 개를 가질 수 있고, 매개변수와 인수의 개수가 일치하지 않아도 된다.
function a(w, x, y, z) {
console.log(w, x, y, z);
console.log(arguments);
}
a('Hello', 'Parameter', 'Argument');
// 실행 결과
Hello Parameter Argument undefined
Arguments(3) ['Hello', 'Parameter', 'Argument']
특수하게 함수 안에서 argument 를 사용할 수 있다. 화살표 함수 안에서는 못쓰고 function 함수 안에서만 쓸 수 있다.
호출할 때 넣은 argument 들이 뭐였는지 배열형태로 나타내어 준다.
짝지어지지 않은 z 는 기본값인 undefined 가 된다.
function add(x, y) {
return x + y;
}
add(5, 3)
// > 8
매개변수의 개수가 인수보다 적은 경우
'스터디 > 웹개발' 카테고리의 다른 글
| 2022년09월25일 TIL - 정보처리기사 실기 - 데이터 입출력 구현 (0) | 2022.10.01 |
|---|---|
| 2022년9월24일 TIL - 정보처리기사 : UI 설계/디자인, 와이어프레임, 프로토타이핑 (0) | 2022.09.28 |
| 2022년9월22일 TIL - AWS, MySQL Workbench DB 접속 정보, 자바스크립트 (0) | 2022.09.25 |
| 2022년9월21일 TIL : 정보처리기사 실기 (0) | 2022.09.25 |
| 2022년9월20일 키오스크 UIUX 디자인 (0) | 2022.09.24 |