Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

후레임의 프로그래밍

var functionName = function () {} vs function functionName () {} 본문

스택오버플로우(Stack Overflow)

var functionName = function () {} vs function functionName () {}

후레임 2020. 10. 26. 01:30
질문

 

최근에 다른 사람의 JavaScript 코드를 유지보수하기 시작했습니다. 버그를 수정하고 기능을 추가하며 코드를 정리하여 일관성을 높이려고합니다.

이전 개발자는 함수를 선언하는 두 가지 방법을 사용했는데 어떤 이유인지 알 수가 없습니다.

 

두 가지 방법은 다음과 같습니다.

var functionOne = function() {
    // Some code
};
function functionTwo() {
    // Some code
}

이 두 가지 방법을 사용하는 이유는 무엇이며 각각의 장단점은 무엇입니까?



답변

차이점은 functionOne은 함수 표현식이므로 해당 줄에 도달했을 때만 정의되는 반면, functionTwo는 함수 선언이며 주변에 즉시 정의된다는 것입니다. 함수 또는 스크립트가 실행됩니다 ( 게양 으로 인해).

예 : 함수 표현식 :

 

// TypeError: functionOne is not a function
functionOne();

var functionOne = function() {
  console.log("Hello!");
};

 

그리고 함수 선언 :

 

// Outputs: "Hello!"
functionTwo();

function functionTwo() {
  console.log("Hello!");
}

 

역사적으로 블록 내에 정의 된 함수 선언은 브라우저간에 일관성없이 처리되었습니다. Strict 모드 (ES5에 도입 됨)는 함수 선언을 둘러싸는 블록으로 범위를 지정하여이 문제를 해결했습니다.

 

'use strict';    
{ // note this block!
  function functionThree() {
    console.log("Hello!");
  }
}
functionThree(); // ReferenceError

 



출처 : http://stackoverflow.com/questions/336859