후레임의 프로그래밍
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
'스택오버플로우(Stack Overflow)' 카테고리의 다른 글
원격 Git 브랜치를 어떻게 확인합니까? (0) | 2020.10.26 |
---|---|
왜 두 시간을 빼면 (1927년) 이상한 결과가 나오는 이유는 무엇입니까? (0) | 2020.10.26 |
현재 Git 작업 트리에서 로컬 (추적되지 않은) 파일을 제거하는 방법 (0) | 2020.10.26 |
JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.10.26 |
"git pull"이 로컬 파일을 덮어 쓰도록하려면 어떻게해야합니까? (0) | 2020.10.26 |