2013-07-07 4 views
5

Firefox에서 이상한 구문 오류가 발생했습니다. 이것은 사소한 것이 아니기 때문에 흥미로운 구문 오류입니다.이상한 javascript 구문 오류

버그 신고로 제출해야합니까?

는 여기에서 몇 가지 스크립트를 테스트했다 : here

그것은 나에게 구문 오류를 주었다. SyntaxError: invalid label at line 5.

app.directive("alertable", function() 
{ 
    return 
    { 
     restrict : "A", 
     link: function(scope, element, attrs) 
     { 
      element.bind("click", function() 
      { 
       alert(attrs.message); 
      }); 
     } 
    }; 
}); 

그리고이 일

은하지 않습니다 :

app.directive("alertable", function() 
{ 
    return { // fix??? 
     restrict : "A", 
     link: function(scope, element, attrs) 
     { 
      element.bind("click", function() 
      { 
       alert(attrs.message); 
      }); 
     } 
    }; 
}); 

답변

11

이것은 의도적으로 설계된 동작입니다.

자바 스크립트의 세미콜론은 선택 사항입니다. (ASI)
파서는 return 줄 뒤에 암시 적 세미콜론을 삽입하고 {이 코드 블록을 시작한다고 가정합니다. (예 : if 또는 for)

코드 블록의 첫 번째 줄은 실제로 유효한 코드가 아니므로 해당 오류가 발생합니다.

return은 피연산자가 있거나없는 유효한 문이므로 이러한 현상이 발생합니다. 마찬가지로

코드

return 
4; 

return; 4;로서 해석된다.

+2

enlightment 주셔서 감사합니다. 전에 "ASI"에 대해 들어 본 적이 없었습니다. 알아 둘만한. 이제는 더 잘 코드화 할 것입니다. – Ismael