자바스크립트에서 함수의 매개변수



자바스크립트에서는 함수를 호출할 때 지정된 매개변수보다 많거나 적게 사용하는 것을 허용한다.


<script>
function print(str1) {
alert(str1);
}
print('string1', 'string2'); //1번 호출
print(); //2번 호출
</script>


위의 코드에서 print함수는 매개변수를 한개 입력 받을 수 있도록 선언되어 있지만, 더 많거나 적은 매개변수를 선언하여도 정상적으로 실행이 된다.


이때 1번 호출 처럼 선언된 매개변수 보다 많은 매개변수를 선언하는 경우 추가된 매개변수는 무시한다.


그리고 2번 호출 처럼 적은 매개변수를 선언하는 경우 그 매개변수는 undefined로 입력된다.


익명 함수와 선언적 함수



익명 함수

 익명함수는 말그대로 이름이 없는 함수이다. 따라서 익명함수를 선언하고 사용하기 위해서는 변수에 넣어서 사용하여야 한다.

1
2
3
4
5
    <script>
        function () {
            //실행코드 작성
        };
    </script>
cs

 익명함수는 위와 같은 형태로 만들어 준다. 그리고 사용하기 위해서는 아래와 같이 변수에 넣어서 그 변수이름으로 호출하면 된다.


1
2
3
4
5
6
    <script>
        var func = function () {
            alert('This is anonymous function');
        };
        func();
    </script>
cs


선언적 함수

선언적 함수는 함수를 선언할 때 이름을 붙여주는 함수를 말한다. 즉, 따로 변수에 넣어주지 않고 선언할 대 붙여준 이름으로 호출하면 된다.


1
2
3
4
5
6
    <script>
        function 함수이름 () {
            // 실행코드 작성
        }
함수이름();
    </script>

cs


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

자바스크립트에서 함수를 선언하는 방법은 위에서 설명한대로 익명 함수와 선언적 함수로 선언하는 방법 두가지 이다.

둘 다 함수를 생성하는 방법이지만, 차이는 있다.


그 차이는 웹부라우저가 script 태그 내부의 내용을 위에서 부터 한줄 씩 읽기 전에 선언적 함수부터 먼저 읽는다는 것이다.

아래의 코드를 실행하면 오류가 발생한다.

1
2
3
4
5
    <script>
        func();
        var func = function () {alert('function A')};
        var func = function () {alert('function B')};
    </script>
cs


이 코드가 오류가 나는 이유는 웹브라우저는 코드를 읽을 때 위에서 부터 한줄씩 차례로 읽는데,

익명함수를 저장한 변수를 선언하기 이전에 그 변수를 사용했기 때문이다.


하지만 다음 코드는 오류가 나지 않는다.


1
2
3
4
5
    <script>
        func();
        function func() {alert('function A')};
        function func() {alert('function B')};
    </script>
cs


이 코드가 오류가 나지 않는 이유는 앞에서 설명햇듯이 웹브라우저가 코드를 읽을 때는 위에서 부터 차례로 읽기는 하나,


그 전에 선언적 함수 가 있으면 그 코드부터 먼저 읽은 뒤에 차례로 읽어 나가기 때문이다.


따라서, 선언적 함수는 웹브라우저가 가장 먼저 읽고, 익명함수는 그 뒤에 코드를 차례로 읽을 때 읽는다.

for of 반복문



for of 반복문은 EMCAScript6에서 새롭게 추가된 반복문 문법이다.


for in 반복문과 사용법은 비슷하지만 차이점은 for in 반복문은 in 앞의 반복 변수가 배열의 인덱스가 되지만,


for of 반복문은 반복 변수가 배열의 각 요소가 된다. 


따라서 바로 배열의 요소에 접근할 수 있다.


1
2
3
4
5
6
    <script>
        var fruit = ['grapes''apple''pineapple''banana'];
        for(var frt of fruit) {
            document.write(frt + '<br>');
        }
    </script>
cs



위와 같이 for of 반복문 안에 frt라는 반복 변수에 인덱스가 저장되는게 아니라 배열의 요소가 저장된다.


for of  반복문은 배열 이외에도 문자열, 맵, 세트 등과 조합해서 사용 할 수 있다.


※ 참고사이트 

   https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of 

+ Recent posts