답변:
함수 선언 후 세미콜론 은 필요하지 않습니다 .
의 문법 FunctionDeclaration
은 다음과 같이 사양에 설명되어 있습니다 .
function Identifier ( FormalParameterListopt ) { FunctionBody }
문법적으로 세미콜론이 필요하지 않지만 왜 그런지 궁금 할 수 있습니까?
세미콜론은 명령문 을 서로 분리하는 역할을 하며 a FunctionDeclaration
는 명령문 이 아닙니다 .
FunctionDeclarations
코드가 실행 되기 전에 평가 됩니다. 호이 스팅 은 이 동작을 설명하는 데 사용되는 일반적인 단어 입니다.
ECMAScript 사양에 설명 된 함수 명령문이 없기 때문에 "함수 선언"및 "함수 명령문"이라는 용어는 종종 서로 바꿔서 잘못 사용됩니다. 비표준입니다.
그러나 다음과 같이 세미콜론을 사용하는 경우 항상 권장됩니다 FunctionExpressions
.
var myFn = function () {
//...
};
(function () {
//...
})();
위 예제에서 첫 번째 함수 다음에 세미콜론을 생략하면 원하지 않는 결과가 나타납니다.
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
첫 번째 함수는 두 번째 함수를 둘러싼 괄호 Arguments
가 함수 호출의 것으로 해석되므로 즉시 실행됩니다 .
추천 강의 :
FunctionDeclaration
대 FunctionExpression
)JS Lint 는 사실상의 규칙이며 함수 본문 뒤에 세미콜론이 없다고 말합니다. "세미콜론" 섹션을 참조하십시오 .
실제로 당신의 취향에 달려 있습니다. Java, C ++, C # 등에 익숙하기 때문에 세미콜론으로 코드 줄을 끝내고 싶습니다. 그래서 자바 스크립트에서 코딩에 동일한 표준을 사용합니다.
나는 일반적으로 세미콜론으로 함수 선언을 끝내지는 않지만 내 선호 사항입니다.
브라우저는 어느 쪽이든 작동하지만 언젠가는이를 규제하는 더 엄격한 표준을 제시 할 것입니다.
내가 쓸 코드의 예 :
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
실제로는 규칙이나 일관성 문제가 아닙니다.
나는 것을 상당히 확신 하지 가 문장의 끝이 어디 있는지 파악하기 때문에 내부 파서 아래 모든 문 감속 후 세미콜론을 배치. 나는 당신이 긍정적으로 그것을 확인할 수있는 편리한 번호를 가지고 있었으면하지만, 당신은 그것을 직접 구글 할 수 있습니다. :)
또한 코드를 압축하거나 축소 할 때 세미콜론이 없으면 모든 공백이 없어져 원하는 작업을 수행하지 않는 스크립트 버전이 축소 될 수 있습니다.
단순한:
;
함수 중괄호가 끝나면 세미콜론을 남겨 두는 것이 좋습니다 . 그들은 몇 년 동안 모범 사례로 간주되었습니다.
항상 사용하는 것의 한 가지 장점은 JavaScript를 축소하려는 경우입니다.
Javascript를 축소함에 따라 파일 크기를 약간 줄이는 데 도움이됩니다.
그러나 위의 모범 사례와 답변은 함수 태그 뒤에 사용하지 않는 것이 좋습니다.
세미콜론을 사용하지 않고 (자신의 사이트가 많은 JavaScript를 제공하는 경우를 좋아하는 많은 개발자와 같이) 축소하려는 경우 모든 종류의 오류 / 경고를 얻을 수 있습니다.
함수를 사용한 후 세미콜론을 사용할 필요가 없는지, 프로그램에서 오류를 일으키지 않습니다. 그러나 코드를 축소하려는 경우 함수 뒤에 세미콜론을 사용하는 것이 좋습니다. 예를 들어 아래 코드와 같은 코드가 있다고 가정하십시오.
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
과
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
둘 다 축소하면 다음과 같이 출력됩니다.
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
과
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};