개발일지

베이스캠프 4일 본문

회고/TIL

베이스캠프 4일

wa_n 2022. 10. 11. 21:55
728x90
반응형

함수란?

함수 는 우리가 만드는 기능 입니다.

지금까지는 메서드 같은 자바스크립트에서 제공되는 기능 들을 사용했지만, 이제부터는 우리가 직접 기능을 만들어 사용해보도록 하겠습니다.

function hello(){
 alert("안녕하세요")
}
undefined
hello()

아래사진 처럼 alert을 쓰면 윈도우 창에 저런 창이 나옴 
함수에는 이런기능 말고 여러가지 기능이 있다 

함수를 만들려면?

예를들어, 두 숫자를 더하는 함수(기능)을 만들어 봅시다.

1.  아래의 그림에서 네모박스 가 함수(기능) 입니다

2. 상자로 들어가는 데이터 3, 5 는 입력데이터(매개변수= parameter) 라고 합니다.

3. 상자에서 반환되어 나오는 8 은 결과데이터(반환데이터= return 값) 라고 합니다.

 

 

'

위 사진을 보면 함수의 기본형식이고 function이란걸 써서 함수라고 알려주고 그 다음 함수이름을 지정해주고 입력데이터가 있다면 매개변수를 먼저 괄호를 이용해 입력하고 이때 입력데이터가 없다면 빈 괄호만 써도 가능하다.

중괄호 안에 이 함수가 어떤 기능을 할지 명령문을 작성해준다.

결과데이터를 반환해야 한다면 return을 이용하여 반환한다 이때 주의할점은 매개변수와 반환할데이터를 optional(선택적인) 이라고 위에 써져있는데 매개변수를 이용하려고 데이터를 받아왔는데 함수안에서 사용하지 않는다면 가져온 의미가 없으므로 잘 보고 사용

 

 

function hello(name){
    alert(name + "님 안녕하세요")
}
undefined
let friend = "김코딩"
undefined

hello(friend)

 

 

함수의 표현식

const 함수이름 = function**(param1, param2, ...){
    // ...code here
    return 결과값
}

변수에 할당된 함수는 함수 선언식과 어딘가 비슷하게 생기지 않았나요?

비슷하게 보이지만, 어딘가 달라보이는 저 함수는 익명함수라고 부릅니다.

나중에 호이스팅을 공부하시게 된다면 알게되실텐데, 함수선언식의 기명함수는 호이스팅의 영향을 받는 반면에 함수 표현식의 익명함수는 호이스팅의 영향을 받지 않습니다.

 

 

const 함수이름 = ( param1, param2, ... )=>{
    // ...code here
    return 결과값
}

 매개변수(parameter)와 return 값은 필수가 아닙니다.→ 매개변수와 리턴값은 있어도 되고 없어도 되는 값이기 때문에 반드시 적어주실 필요는 없습니다.상황에 따라 필요하실 때 적절히 적어주시면 됩니다.

 

 

 

함수 만즐어보기 예제

// 함수 선언식 - 더하기 함수 만들어보기**
function add(a, b){
    return a+b
}

// 함수 표현식 - 빼기 함수 만들어보기**
const minus = function (a, b){
    return a-b
}

// 화살표 함수 - 곱하기 함수 만들어보기
const multiply = (a, b)=>{
    return a*b
}

 

 

만들어 둔 함수 실행시키기

만들어둔 함수를 실행시킬려면 해당 함수를 호출 해야한다.

함수를 호출할때는 함수의 이름을 부르고 ()를 뒤에 붙여준다.

//함수를 만들어 줍니다.
function sayHi(){
    alert("안녕하세요 여러분!")
}
sayHi()

함수가 매개변수를 받고있지 않은 경우에는 호출시 인자를 넘겨주지 않아도 되지만,

아래와 같이 매개변수(파라미터)를 받고 있는 경우에는 호출시 적절한 인자(argu)를 넘겨주어야 합니다.

 

// 함수를 만들어 줍니다.
function calculator(a,b){
    return a+b
}
// 함수를 호출해줍니다.
calculator(1,2)

 

 

실무예제 - {함수} 언제 사용하나요?→ 실무에서 함수는 너무나도 많이 사용되기 때문에 언제 사용한다 단정할 수 없습니다.

여러분들이 특정 기능이 필요하다 하실때마다 함수를 이용해서 만드시기때문에 기능이 필요하실때마다 사용하게 되실겁니다.

 

내장함수

 

내장함수라는 것은 자바스크립트가 함수 선언을 미리 해놔서 호출만으로 사용할 수 있는 함수를 뜻합니다.내장 함수의 종류에는 여러가지가 있습니다. 하지만, 우리는 많이 사용하는 세가지 정도만 알아보도록 하겠습니다.메세지를 지정할 수 있는 경고 대화 상자를 띄웁니다.

 

alert

메세지를 지정할 수 있는 경고 대화 상자를 띄웁니다.

 

//alert 만들어보기 _ 콘솔에서 해보세요!
alert("이렇게 만드시면 경고창이 생겨요!")

 

setTimeout

setTimeout(기능, 시간) // 기능은 함수이고, 시간은 밀리세컨드 단위입니다.

setInterval

setInterval(기능, 시간)         // 기능은 함수이고, 시간은 밀리세컨드 단위입니다.

내장함수 예제

// setTimeout 예제
console.log("로딩을 시작합니다.")
setTimeout(function(){
		console.log("로딩 완료.")                        // 로딩을 시작합니다.
}, 3000)                                           // 로딩 완료.

// setInterval 예제
setInterval(function(){
		const now = new Date()
		const minutes = now.getMinutes()
		const seconds = now.getSeconds()

		console.log(minutes + "분" + seconds + "초")         // 16분 11초
                                                        // 16분 12초
}, 1000)                                                // 16분 13초
                                                        // 16분 14초
																									      //	  ...

실무적용 - { setInterval() 언제 사용하나요? }

위와 같은 인증 타이머를 만들기 위해 아래와 같은 로직으로 구성하시면 됩니다.

let timer = 180
setInterval(function(){
		timer = timer - 1;
		const minutes = Math.floor(timer / 60)
		const seconds = timer - minutes * 60
		console.log(minutes + ":" + seconds)
}, 1000)

 

시간지연함수와 시간반복함수의 종료

시간지연함수와 시간반복함수는 중간에 강제로 종료할 수 있습니다.

 

// 시간지연함수 강제종료
const time = setTimeout(기능, 시간)     // 시간지연함수를 임시로 변수/상수에 저장해놓습니다.
clearTimeout(time)                    // 저장했던 시간지연함수를 종료합니다.

// 시간반복함수 강제종료
const time = setInterval(기능, 시간)    // 시간반복함수를 임시로 변수/상수에 저장해놓습니다.
clearInterval(time)                   // 저장했던 **시간반복함수를 종료**합니다.

 

각각의 종료 함수는 각자의 함수 안에서 사용할 수 있습니다.즉, clearInterval은 setInterval안에서 사용할 수 있다는 뜻 입니다.


템플릿 리터럴

템플릿 리터럴이란?

// 오늘 날짜 예쁘게 보여주기
console.log("오늘은 " + year + "년 " + month + "월 " + date + "일 입니다.")
                                                      // 오늘은 2021년 4월 3일 입니다.

// 지금 시간 예쁘게 보여주기
console.log("지금은 " + hours + "시 " + minutes + "분 " + seconds + "초 입니다." )
                                                      // 지금은 13시 30분 17초 입니다.

하나만 더!문장과 변수를 함께 쓸 때, 더하기(+)로 연결하는 것 보다 더 깔끔한 방법이 있나요?있습니다! 아래와 같이 해보세요!

console.log(`오늘은 ${year}년 ${month}월 ${date}일 입니다.`)
console.log(`오늘은 ${hours}시 ${minutes}분 ${seconds}초 입니다.`)

이렇게 사용하는 방식을 템플릿 리터럴(Template literal) 이라고 합니다.실무에서는 이 방식을 사용합니다

728x90
반응형

'회고 > TIL' 카테고리의 다른 글

베이스캠프 8일차  (1) 2022.10.14
베이스캠프 7일차  (0) 2022.10.13
베이스캠프 6일차  (0) 2022.10.12
베이스캠프 3일차  (2) 2022.10.08
베이스캠프 1~2일차  (0) 2022.10.07