자바 스크립트에서 함수 뒤에 세미콜론이 포함 된 다른 개발자가 있지만 일부는 그렇지 않았습니다. 가장 좋은 방법은 무엇입니까?
function weLikeSemiColons(arg) {
// bunch of code
};
또는
function unnecessary(arg) {
// bunch of code
}
답변
함수 선언 후 세미콜론 은 필요하지 않습니다 .
의 문법 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
)
답변
변수로 함수 선언 후에 사용합니다.
var f = function() { ... };
그러나 고전적인 스타일 정의 후에는 아닙니다.
function f() {
...
}
답변
JS Lint 는 사실상의 규칙이며 함수 본문 뒤에 세미콜론이 없다고 말합니다. “세미콜론” 섹션을 참조하십시오 .
답변
일관성을 유지하십시오! 그것들은 필요하지 않지만 대부분의 축소 기술은 세미콜론 (예 : Packer )에 의존하기 때문에 개인적으로 사용합니다 .
답변
실제로 당신의 취향에 달려 있습니다. Java, C ++, C # 등에 익숙하기 때문에 세미콜론으로 코드 줄을 끝내고 싶습니다. 그래서 자바 스크립트에서 코딩에 동일한 표준을 사용합니다.
나는 일반적으로 세미콜론으로 함수 선언을 끝내지는 않지만 내 선호 사항입니다.
브라우저는 어느 쪽이든 작동하지만 언젠가는이를 규제하는 더 엄격한 표준을 제시 할 것입니다.
내가 쓸 코드의 예 :
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
답변
실제로는 규칙이나 일관성 문제가 아닙니다.
나는 것을 상당히 확신 하지 가 문장의 끝이 어디 있는지 파악하기 때문에 내부 파서 아래 모든 문 감속 후 세미콜론을 배치. 나는 당신이 긍정적으로 그것을 확인할 수있는 편리한 번호를 가지고 있었으면하지만, 당신은 그것을 직접 구글 할 수 있습니다. 🙂
또한 코드를 압축하거나 축소 할 때 세미콜론이 없으면 모든 공백이 없어져 원하는 작업을 수행하지 않는 스크립트 버전이 축소 될 수 있습니다.
답변
스크립트를 축소 할 때 등호로 시작하는 함수에 세미콜론을 사용해야한다는 것을 깨달았습니다. 함수를 var로 정의하면 예, 세미콜론을 사용해야합니다.
세미콜론이 필요합니다
var x = function(){};
var x = new function(){};
this.x = function(){};
세미콜론 필요 없음
function x(){}