5.
함수 : 코드의 집합을 나타내는 자료형
☑️ 함수 호출 : 함수를 사용하는 것
☑️ 매개 변수 : 함수를 호출할 때 괄호 내부에 넣는 자료
☑️ 리턴값 : 함수를 호출해서 최종적으로 나오는 결과
☑️ 익명 함수 : 이름이 붙어있지 않는 함수
const 함수 = function () {}
호출 -> 함수()
☑️ 선언적 함수 : 이름이 있는 함수 (일반적으로 많이 사용)
function 함수() { }
⬇️ 익명 함수와 선언적 함수 차이
익명 함수
순차적인 코드 실행에서 코드가 해당 줄을 읽을 때 생성된다.
선언적 함수
순차적인 코드 실행이 일어나기 전에 생성된다.
따라서 같은 블록이라면 어디에서 함수를 호출해도 상관없다.
= 최근에는 익명 함수를 선호하고, 익명 함수가 안전한 편이다.
☑️ 나머지 매개변수 : 여러 개의 숫자를 매개변수로 넣어 실행하고 싶을 때
function 함수 이름(...나머지 매개변수) {}
가변 매개 함수 : 호출시 매개변수의 개수가 고정적이지 않은 함수 (나머지 매개변수 사용)
⬇️ 나머지 매개변수와 일반 매개변수 조합
function 함수명 (매개변수, 매개변수, ...매개변수) {}
☑️ 배열인지 확인하기
Array.isArray() 메소드 사용
일반적인 typeof 연산자로는 배열을 확인할 수 없음
☑️ 전개 연산자 : 배열을 함수의 매개변수로써 전개하고 싶을 때 사용
함수명 (...배열)
배열을 전개해서 함수의 매개변수로 전달해줌
전개 연산자 사용 -> [1, 2, 3, 4]
전개 연산자 사용x -> [Array(4)]
* 전개 연산자가 없던 시절엔 apply 함수 사용
☑️ 기본 매개변수
함수명 (매개변수, 매개변수 = 기본값, 매개변수 = 기본값)
매개변수에 기본값 지정
☑️ 콜백 함수 : 매개변수로 전달하는 함수
* 매개변수를 통해 함수를 받고 그 함수를 통해 결과값을 호출한다.
⬇️ 콜백 함수를 활용하는 함수
⬇️ forEach() : 배열 내부의 요소 사용해 콜백 함수 호출
numbers.forEach(function (value, index, array) {
console.log(`${index}번째 요소 : ${value}`)
}
*
cards.forEach((a) => { ... }) : 화살표 함수 방식
⬇️ map() : 콜백 함수에서 리턴한 값들을 기반으로 새로운 배열을 만듦
map(function (value, index, array) { } )
** 콜백 함수에 매개변수는 value만, value & index만 사용하는 경우가 많음
모두 입력할 필요 없음
⬇️ filter() : 콜백 함수에서 리턴하는 값이 true인 것들만 모아서 새로운 배열을 만듦
filter (function (value) { }
* index, array 생략한 것
☑️ 화살표 함수 : 단순한 형태의 콜백 함수를 쉽게 입력하고자 사용
(매개변수) => { }
&
(매개변수) => 리턴값
function 키워드 대신 화살표 사용
☑️ 메소드 체이닝
numbers
.filter((value) => value % 2 === 0)
.map ((value) => value * value)
.forEach ((value) => {
console.log(value)
})
어떤 메소드가 리턴하는 값을 기반으로 해서 함수를 줄줄이 사용하는 것
☑️ 타이머 함수
setTimeout(함수, 시간) -> 특정 시간 후에 함수를 한 번 호출
setInterval(함수, 시간) -> 특정 시간마다 함수 호출
clearTimeout(타이머_id) -> setTiemout 함수로 설정한 타이머 제거
clearInterval(타이머_id) -> setInterval 함수로 설정한 타이머 제거
☑️ 즉시 호출 함수
(function () {}) ()
즉시 호출 함수를 사용해 변수 이름 충돌 문제를 해결한다.
☑️ 엄격 모드
'use strict'
문장
문장
자바스크립트는 이러한 문자열을 읽어들인 순간부터
코드를 엄격하게 검사한다.
6.
객체
☑️ 객체 : '실제로 존재하는 사물', 이름: 값으로 구성된 (속성)을 가진 자바스크립트의 기본 데이터 타입
⬇️ 객체의 요소에 접근
product['제품명']
&
product.제품명
⬇️ 속성, 메소드 구분
요소 : 배열 내부의 값
속성 : 객체 내부의 값
메소드 : 객체 속성 중 함수 자료형인 속성
* 화살표 함수는 메소드로 사용하지 않음 (window 객체 출력)
window 객체 : 웹 브라우저 자체를 나타내는 웹 브라우저에서 실행하는 자바스크립트의 핵심 객체
⬇️ 메소드 내부에서 this 키워드
메소드 내에서 자기 자신이 가진 속성을 출력하고 싶을 때는
자신이 가진 속성임을 분명하게 표시해야
= this 사용
⬇️ 동적으로 객체 속성 추가 / 제거
동적으로 객체 속성 추가
-> JSON.stringfy()
동적으로 객체 속성 제거
-> delete 객체.속성
⬇️ 메소드 간단 선언 구문
const pet = {
name: '구름',
eat (food) {
alert(this.name + '은/는' + food + '을/를 먹습니다.')
}
}
pet.eat('밥')
=> 구름이는 밥을 먹습니다.
자료
☑️ 기본 자료형
숫자, 문자열, 불
객체가 아니므로 속성을 가질 수 없음
⬇️ 기본 자료형을 객체로 선언하기
const 객체 = new 객체 자료형 이름 ()
이 방법으로 숫자, 문자열, 불 객체 생성 가능
⬇️ 기본 자료형의 일시적 승급
문자열 자료형 등을 생성하고 뒤에 온점을 찍으면
자동 완성 기능으로 메소드들이 나오는데
이것은 사용의 편리성을 위해서 기본 자료형의 속성과 메소드를 호출할 때
일시적으로 기본 자료형을 객체로 승급시키는 것.
= 즉, 일시적이다.
따라서 기본 자료형은 속성과 메소드들을 사용할 수는 있지만, 추가로 가질 수는 없다.
⬇️ 프로토타입으로 메소드 추가
객체 자료형 이름.prototype.메소드 이름 = function () { }
ex. Number.prototype.sample = 10
const i = 273
i.sample = 10
어떤 객체의 prototype이라는 속성은 객체 전용 틀이라고 할 수 있음
= 이 prototype 객체에 속성, 메소드를 추가하면 모든 객체 & 기본 자료형에서 해당 속성과 메소드 사용 가능
☑️ 객체 자료형
속성과 메소드를 가질 수 있는 모든 것
ex. 함수, 배열 등
자바스크립트에서 함수는 객체의 특성을 완벽하게 가지고 있으므로 일급객체에 속한다고 표현하기도 함
☑️ indexOf
문자열.indexOf(문자열) >=0
등의 코드를 사용하면 문자열 내부에 어떤 문자열이 포함되어 있는지
불 형태로 얻을 수 있음
☑️ Number 객체
⬇️ 숫자 N번째 자릿수까지 출력하기 : toFixed()
toFixed()
괄호 -> 소수점 이하 몇 자리까지 출력할 건지
⬇️ NaN, infinity 확인하기
NaN
-> Number.isNaN()
infinty
-> Number.isFinite()
☑️ String 객체
⬇️ 문자열 양쪽 끝 공백 없애기 : trim()
stringA.trim()
⬇️ 문자열 특정 기호로 자르기 : split()
line.split(',')
괄호 안은 무엇으로 자를 건지
☑️JSON 객체
기본 자료형과 관련된 객체 외 자바스크립트가 기본적으로 제공하는 내장 객체
자바스크립트의 객체처럼 자료를 표현하는 방식 (데이터를 담는 방법 중 하나)
추가 규칙
1. 값을 표현할 때는 문자열, 숫자, 불 자료형만 사용할 수 있다
2. 문자열은 반드시 큰 따옴표로 만들어야 한다
3. 키에도 반드시 따옴표를 붙여야 한다
☑️ Math 객체
⬇️ 랜덤한 숫자 만들기 : random()
Math.random()
☑️ 배열 기반 다중 할당
한 번에 여러 변수에 값을 할당
[식별자, 식별자, 식별자] = 배열
ex. let [a, b] = [1, 2]
☑️ 객체 기반 다중 할당
객체 내부에 있는 속성을 꺼내 변수로 할당할 때
{ 속성 이름, 속성 이름 } = 객체
{ 식별자 = 속성 이름, 식별자 = 속성 이름 } = 객체
ex. const {name, price} = object -> object 에서 name, price 속성 이름 그대로 꺼내기
const {a=name, b=price} = object -> 다른 이름으로 속성 꺼내기
☑️ 배열 전개 연산자
배열과 객체는 할당할 때 얕은 복사가 이루어짐
얕은 복사 : 복사하면 이름만 다르고 같은 값이 나오는 것
깊은 복사 : 완전히 독립적으로 작동하는 것
깊은 복사로 만드는 방법은
[...배열]
= 전개 연산자를 사용해 입력하면 완전히 독립적으로 작동함
위와 같이 복사하고 뒤에 자료를 추가하는 코드도 많이 사용되는데
[...배열, 자료, 자료]
와 같이 쓰면 된다
☑️ 객체 전개 연산자
{...객체}
{...객체, 자료, 자료}
위와 같다
'JS' 카테고리의 다른 글
모던 자바스크립트 딥다이브 3장 - 자바스크립트 개발 환경과 실행 방법 (0) | 2025.01.27 |
---|---|
모던 자바스크립트 딥다이브 2장 - 자바스크립트란? (0) | 2025.01.27 |
모던 자바스크립트 딥다이브 1장 - 프로그래밍 (0) | 2025.01.27 |
자바스크립트 개념 정리 1 (0) | 2024.04.26 |
개요 (0) | 2024.04.26 |