>웹 프론트엔드 >JS 튜토리얼 >JavaScript 고급 시리즈 - 함수 선언 및 표현식

JavaScript 고급 시리즈 - 함수 선언 및 표현식

黄舟
黄舟원래의
2017-02-08 10:00:361220검색
  • 함수 선언

  • 함수 할당식

  • 명명된 함수의 할당식


함수는 JavaScript의 일급 객체이므로 다른 값처럼 전달될 수 있습니다. 일반적인 사용법은 익명 함수를 콜백 함수로 비동기 함수에 전달하는 것입니다.

함수 선언

function foo() {}

위 메서드는 실행 전에 파싱(호이스팅)되므로 현재 컨텍스트 내 어디에나 존재하며, 함수 정의 본문 위에서 호출하더라도 정확합니다. 의.

foo(); // 正常运行,因为foo在代码运行前已经被创建
function foo() {

함수 할당 표현식

var foo = function() {};

이 예에서는 foo 변수에 익명 함수를 할당합니다.

foo; // 'undefined'
foo(); // 出错:TypeError
var foo = function() {};

var는 선언문을 정의하므로 코드가 실행되기 전에 foo 변수가 구문 분석되므로 코드가 실행될 때 foo 변수가 이미 정의되어 있습니다.

그러나 대입문은 런타임에만 실행되므로 해당 코드가 실행되기 전에는 foo의 값이 기본적으로 정의되지 않습니다.

이름이 지정된 함수의 할당식

또 다른 특별한 경우는 이름이 지정된 함수를 변수에 할당하는 것입니다.

var foo = function bar() {
    bar(); // 正常运行
}
bar(); // 出错:ReferenceError

bar는 foo에 함수를 할당했기 때문에 함수 선언 외부에서는 보이지 않습니다. 그러나 bar 내부에서는 여전히 보입니다. 이는 JavaScript의 명명 처리로 인해 발생합니다. 함수 이름은 항상 함수 내에서 표시됩니다.

참고: IE8 이하 브라우저에서는 브라우저가 명명된 함수 할당 표현식을 잘못 구문 분석하고 이를 foo와 bar의 두 함수로 구문 분석하기 때문에 bar가 외부에도 표시됩니다.


위 내용은 자바스크립트 고급 시리즈 - 함수 선언 및 표현식 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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