JavaScript 인터프리터는 "세미콜론 삽입"이라고하는 것을 수행하므로 세미콜론이없는 행이 유효하면 명령문의 끝 부분에 세미콜론이 자동으로 추가되며 오류는 발생하지 않습니다.
var foo = 'bar'
// Valid, foo now contains 'bar'
var bas =
{ prop: 'yay!' }
// Valid, bas now contains object with property 'prop' containing 'yay!'
var zeb =
switch (zeb) {
...
// Invalid, because the lines following 'var zeb =' aren't an assignable value
너무 복잡하지는 않지만 분명히 뭔가 잘못 됐을 때 오류가 발생합니다. 그러나 오류가 이 아닌이 발생하지만 세미콜론 삽입으로 인해 명령문이 의도 한대로 실행되지 않는 경우가 있습니다. 내가 설정하는 알고있는 방법이 없기 때문에 (이런
return {
prop: 'yay!'
}
// The object literal gets returned as expected and all is well
return
{
prop: 'nay!'
}
// Oops! return by itself is a perfectly valid statement, so a semicolon
// is inserted and undefined is unexpectedly returned, rather than the object
// literal. Note that no error occurred.
버그 사냥에 강합니다 어려울 수 있습니다 당신은 을 보장 할 수는 없지만이 일이 결코 : 객체를 반환하도록되어 기능을 고려 세미콜론 삽입을 제외하고) 세미콜론을 사용하여 의도를 분명하게 할 때 이러한 종류의 버그를 쉽게 식별 할 수 있습니다. 그것과 명시 적으로 세미콜론을 추가하는 것은 일반적으로 좋은 스타일로 간주됩니다.
처음에는이 Douglas Crockford's 간결하고 간명 한 책 "JavaScript: The Good Parts"을 읽을 때이 잠자는 가능성을 알게되었습니다. I 매우 좋습니다.
저는 IE에서 깨질 것이라고 확신합니다. 유효한 자바 스크립트 일 수도 있지만 어쨌든 세미콜론을 추가해야 할 수도 있습니다. –
세미콜론은 선택 사항이지만 YUI Compressor와 같은 JavaScript 최소화기를 통해 실행하면 코드가 유효하지 않게됩니다. 따라서 항상 세미콜론을 포함하는 것이 좋습니다. – Ricky