Dolphins의 HelloWorld
자바스크립트 함수 본문
함수
함수는 여러개의 인자를 받아서, 그 결과를 출력한다.
자바스크립트에서 특이한 점은 만약 파라미터의 갯수와 인자의 갯수가 일치하지 않아도
오류가 나지 않는다는 점이다.
예시를 통해 살펴보자.
첫번째 경우에 인자를 넣어주지 않음에도 결과가 나오는것을 볼 수 있다.
결과값을 보면 기본적으로 firstname이 undefined라고 돼있는것을 볼 수 있는데
고로 선언되어 있고 할당돼있지 않은 변수는 undefined라고 나온다 라는것을 알 수 있다.
세번째 경우에서 필요로 하는 인자보다 인자가 많이 들어갔음에도 불구하고 에러가 나지 않는
모습을 볼 수 있다.
함수 - 함수표현식
함수는 아래에 있는 printName과 같이 표현할 수도 있다.
그러나 이렇게 표현하면 함수선언문과 달리 선언과 호출순서에 따라서 정상적으로 함수가 실행되지
않을 수도 있다.
위에서 test함수와 test2함수를 각각 실행해보면 출력위치 때문에 test1은 오류가 나고
test2는 정상적으로 실행이 되는것을 볼 수 있다.
반면 이런식으로 코드를 짜면 정상적으로 실행이 된다.
자바스크립트 함수는 실행되기 전에 함수 안에 필요한 변수들을 미리 다 모아서 선언한다.
함수 안에 있는 변수들을 모두 끌어올려서 선언한다고 해서, 이를 hoisting이라고 한다.
즉 위의 예시중 첫번째 예시에서는
console.log()를 하기전에 var printName 이 선언되고 그 밑에서 해당 변수가 정의되기 때문에
type에러가 나온것이다.
그러나 두번째 예시에서는 printName이라는 함수 그 자체가 미리 할당되기 때문에 제대로 동작한다고
생각하면 된다.
함수 - 반환값과 undefinded
자바스크립트의 함수는 따로 void라는 타입이 없다.
자바스크립트 함수는 반드시 return값이 존재하며 만약 없다면 기본 반환값이 undefined가 반환된다.
함수 - arguments 객체
함수가 실행되면 그 안에는 arguments라는 특별한 지역변수가 자동으로 생성된다.
arguments의 타입은 객체이다.
자바스크립트 함수는 선언한 파라미터보다 더 많은 인자를 보낼 수도 있다.
이 때 넘어온 인자를 arguments로 배열의 형태로 하나씩 접근할 수가 있다.
* arguments는 배열타입이 아니므로 배열의 메서드를 사용할 수는 없다.
Arrow Function
ES2015 버전부터 사용하는 arrow function이라는 것도 있다.
다른 언어의 람다식과 비슷한것으로 생각이 된다.
이런식으로 사용이 되는데 이 문법에대해서 궁금하다면
아래의 URL에서 좀더 알아보자.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
출처 : edwith
https://www.edwith.org/boostcourse-web/lecture/16695/
'웹 프로그래밍 > DB연결 웹 어플리케이션' 카테고리의 다른 글
JavaScript 이벤트 (0) | 2018.08.22 |
---|---|
DOM(Document Object Model)과 querySelector (0) | 2018.08.21 |
window 객체와 setTimeout (0) | 2018.08.20 |
자바스크립트 비교-반복-문자열 (0) | 2018.08.17 |
자바스크립트 변수-연산자-타입 (0) | 2018.08.17 |