>웹 프론트엔드 >JS 튜토리얼 >함수 선언과 함수 표현의 차이점은 무엇입니까?

함수 선언과 함수 표현의 차이점은 무엇입니까?

一个新手
一个新手원래의
2017-10-10 10:24:581999검색


1. 함수 정의 방법

함수를 정의하는 방법에는 함수 선언과 함수 표현식 두 가지가 있습니다.
함수 선언의 구문은 다음과 같습니다.

function functionName(arg0,arg1){//函数体}

첫 번째는 함수 키워드이고 그 다음은 함수 이름입니다. 함수 이름을 지정하는 두 가지 방법이 있습니다. 함수 선언과 관련하여 가장 중요한 기능 중 하나는 함수 선언 승격입니다. 즉, 코드를 실행하기 전에 함수 선언을 읽습니다. 즉, 함수를 호출하는 문 뒤에 함수 선언을 배치할 수 있습니다. 예:

a();function a(){alert("a");}//a
이 예제는 코드를 실행하기 전에 함수 선언을 읽기 때문에 잘못되지 않습니다.

함수를 생성하는 두 번째 방법은 함수 표현식입니다. 가장 일반적인 방법은 다음과 같습니다.

var a = function(arg0,arg1){//函数体};

이 형태는 일반적인 변수 할당문처럼 보입니다. 즉, 함수를 생성하고 이를 변수 a에 할당하면 함수가 생성됩니다. 이 경우 function 키워드 뒤에 식별자가 없기 때문에 익명 함수라고 합니다.

함수 표현식은 다른 표현식과 마찬가지로 사용하기 전에 값
을 할당해야 합니다. 다음 코드는 오류를 발생시킵니다.

a();var a = function(){alert("a");};//错误//补充说明:使用该方法定义函数,只有变量声明提前了,变量初始化代码仍在原来的位置
2. 함수 선언과 함수 표현식의 차이점

1. 함수 선언에는 함수 이름이 필수이지만 함수 표현식에서는 선택 사항입니다.

//函数声明
    function sum(a, b) {
        return a + b;
    }
    alert(sum(1, 2));
//函数表达式
    /* var s = function sum(a, b) {
        return a + b;
    }
    alert(s(1, 2)); */

    var s = function(a, b) {
        return a + b;
    }
    alert(s(1, 2));    //以上两种都可以

2. 함수 선언으로 정의된 함수는 함수 선언 전에 호출할 수 있지만, 함수 표현식으로 정의한 함수는 선언 후에만 호출할 수 있습니다.

근본적인 이유는 파서가 이 두 정의 메서드를 읽는 순서가 다르다는 것입니다. 파서는 함수 선언을 읽습니다. 즉, 함수 선언은 어느 위치에서나 호출될 수 있지만 함수 표현식의 경우 파서는 다음을 수행할 수 있습니다. only read 함수 표현식이 있는 줄까지 실행이 시작되지 않습니다(자세한 내용은 1부 "함수 정의 방법" 참조).

위 내용은 함수 선언과 함수 표현의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.