본문 바로가기
Front-End/JavaScript

JavaScript(5)

by newny 2023. 2. 15.
반응형

✅함수 선언 형태

선언적 함수(옛날 사용 방식)

function f (매개변수, 매개변수) {
	return 리턴값
}

 

익명 함수

const f = function(매개변수, 매개변수) {
	return 리턴값
}

 

프로시저 형태의 함수

매개변수를 갖지않는 함수

const f = function() {
	consol.log('안녕하세요 + ${x}')
	consol.log('안녕하세요 + ${x}')
	consol.log('안녕하세요 + ${x}')
}

 

수학적 함수

매개변수가 있는 함수

const f = function(x) {
		return x + 5
}

 

✅API (Application Programming Interface)

애플리케이션 프로그램을 만들때의 약속

 

✅나머지 매개변수

  • API 에 많이 사용되므로 형태를 알아두는것이 중요
  • 매개변수에 ‘…매개변수’라고 입력
  • … : 전개연산자
  • 배열의 형태로 리턴됨
const 함수 = function(...매개변수) {
	consol.log(매개변수)
}

 

나머지 매개변수 기본형태

const 함수 = function(...매개변수) {
	consol.log(매개변수)
}
함수()        // []
함수(1)       // [1]
함수(1,2)     // (2) [1, 2]
함수(1,2,3)   // (3) [1, 2, 3]
함수(1,2,3,4) // (4) [1, 2, 3, 4]

 

일반적인 매개변수와 함께 사용되는 나머지 매개변수

  • 일반 매개변수 + 나머지 매개변수 (O)
  • 나머지 매개변수 + 일반 매개변수 (X)
  • →남은매개변수들이 들어오는것이기 때문에 일반적인 매개변수를 뒤에 둘 수 없음
const 함수 = function(a,b,...매개변수) {
	consol.log(a,b,매개변수)
}
함수()        // undefined undefined > []
함수(1)       // 1 undefined > []
함수(1,2)     // 1 2 > []
함수(1,2,3)   // 1 2 > (1) [3]
함수(1,2,3,4) // 1 2 > (2) [3, 4]

 

✅전개 연산자

함수를 호출할 때 사용

const a = [1,2,3]
함수(a[0], a[1], a[2])
함수(...a) // 위의 문장과 같은 결과값 도출

사용 예 → 배열안의 숫자중 최소값 또는 최대값 찾기

 

✅화살표 함수

본문이 한줄 이상일 때

  • 중괄호를 사용해야함
  • 중괄호를 사용했다면 return이 필요한 함수의 경우 지시자를 사용해야함
let sum = (a, b) => {  // 중괄호는 본문 여러 줄로 구성되어 있음을 알려줍니다.
  let result = a + b;
  return result; // 중괄호를 사용했다면, return 지시자로 결괏값을 반환해주어야 합니다.
};

alert( sum(1, 2) ); // 3

 

본문이 한줄일 때

  • 인수를 감싸는 괄호를 생략할 수 있음
  • return이 필요한 함수의 경우에도 return 생략 가능
let func = (arg1, arg2, ...argN) => expression

 

✅콜백함수

매개변수로 전달하는 함수

const test = function (a) {
  console.log(a)
}

const hello = function () {
  console.log("안녕하세요")
)
test(hello)

[출력]
f () {
  console.log("안녕하세요")
}
const test = function (콜백함수) {
  콜백함수()
}

const hello = function () {
  console.log("안녕하세요")
)
test(hello) //콜백함수 -> hello()

[출력]
안녕하세요  // 매개변수로 함수가 들어갔기 때문에 출력됨
const test = function (배열, 콜백함수) {
  for (const 값 of 배열) {		
    콜백함수(값)
  }
}

const arr = [52, 273, 103, 32]
const hello = function (콜백함수의_매개변수) {
  console.log(`${콜백함수의_매개변수)번째 안녕하세요`)
}
test(arr, hello)
const test = function (배열, 콜백함수) {
  for (const 값 of 배열) {		
    콜백함수(값)
  }
}

test([52, 273, 103, 32], function (콜백함수의_매개변수) {
  console.log(`${콜백함수의_매개변수)번째 안녕하세요`)
})

 

✅콜백함수를 이용하는 메소드, 함수

forEach(콜백함수) 메소드

배열을 순회하면서 인자로 전달한 함수를 호출하는 반복문

const arr = [10, 20, 30, 40, 50]
const test = function(value, index, array) {
		console.log(value, index, array)
}
arr.forEach(test)

[결과]
10 0 (5)[10, 20, 30, 40, 50]
20 1 (5)[10, 20, 30, 40, 50]
30 2 (5)[10, 20, 30, 40, 50]
40 3 (5)[10, 20, 30, 40, 50]
50 4 (5)[10, 20, 30, 40, 50]
arr.forEach(function(value, index, array) {
		console.log(value, index, array)
})
arr.forEach((value, index, array) => {
		consol.log(value, index, array)
})

 

filter(콜백함수) 메소드

기존에서 특정 조건을 만족하는 값을 추출하여 새로운 배열을 만들때 사용

boolean타입 리턴 함수를 콜백함수로 받음

true로 판단되는 요소들만 모아서 배열로 리턴

let arr = [12, 13, 14, 15, 16]
let test = function(value, index, array) {
		console.log(`배열 ${array}에서 ${index}번째 요소 ${value}를 추출`) 
		return true
}
arr.filter(test)

[결과]
배열 12,13,14,15,16에서 0번째 요소 12를 추출
배열 12,13,14,15,16에서 1번째 요소 13를 추출
배열 12,13,14,15,16에서 2번째 요소 14를 추출
배열 12,13,14,15,16에서 3번째 요소 15를 추출
배열 12,13,14,15,16에서 4번째 요소 16를 추출

//-----------------------------------------------------------

test = function(value) { //index, array 생략
		return false
}
arr.filter(test)

[결과]
[]
arr.filter(function(value) {
		return value % 2 ===0
})

[결과]
(3) [12, 14, 16]
arr.filter((value) => {
		return value % 2 ===0
})

arr.filter((value) => value % 2 ===0 )  // 위, 아래 같은문장

 

map(콜백함수) 메소드

기존 함수의 요소값을 변경하여 새로운 함수를 만들때 사용

let arr = [12, 13, 14, 15, 16]
let test = function(value) { // index, array 생략
		return value * 10
}
arr.map(test)

 

setTimeout(콜백함수, 밀리초단위) 함수

특정한 시간(밀리초) 후에 한번 출력

setTimeout(function () {
		console.log("setTimeout 함수입니다!"
}, 1000)

 

setInterval(콜백함수, 밀리초단위) 함수

특정한 시간마다 반복출력

setInerval(function () {
		console.log("setTimeout 함수입니다!"
}, 1000)

 

✅선언적 함수와 익명 함수의 차이

실행 흐름이 복잡해 질 수있으므로 선언적 함수보단 익명함수를 사용해야함

 

익명 함수

실행될 때 의미를 갖는 함수?

위에서 아래로 차례대로 실행됨

익명 함수를 먼저 작성 후 함수 호출을 해야 실행됨 (작성 순서가 바뀌면 호출되지 않음)

실행되면 메모리에 올라간다? 객체??

let f = function() {
		console.log('A 함수 입니다.')
}
f = function() {
		console.log('B 함수 입니다.')
}
f = function() {
		console.log('C 함수 입니다.')
}

f()
[출력]
> C 함수 입니다.

 

선언적 함수

선언적 함수를 사용하면 함수 호출이 먼저와도 실행 가능 (작성 순서 상관없이 호출 가능)

메모리에 먼저 올린 후 실행된다? static??

f()

function f () {
		console.log('A 함수 입니다.')
}
function f () {
		console.log('B 함수 입니다.')
}
function f () {
		console.log('C 함수 입니다.')
}

[출력]
C 함수 입니다.

 

호출 순서

f() // 1

f = function() { // 4
		console.log('익명 함수 입니다.')
}

function f () { // 2
		console.log('선언적 함수 입니다.')
}

f() // 3
<script>
f() // 1 오류
f = function() {
		console.log('익명 함수 입니다.')
}
</script>

<script>
function f () { // 2 선언됨
		console.log('선언적 함수 입니다.')
}
f() // 3 선언적 함수 실행됨
</script>
<script>
f() // 2 선언적 함수 실행됨
function f () // 1 선언됨
		console.log('선언적 함수 입니다.')
}
</script>

<script>
f() // 3 선언적 함수 실행됨
f = function() {
		console.log('익명 함수 입니다.')
}
</script>
반응형

'Front-End > JavaScript' 카테고리의 다른 글

자바스크립트 예제(5)  (0) 2023.02.15
자바스크립트 예제 (4)  (0) 2023.02.14
JavaScript(4)  (0) 2023.02.14

댓글