2013-07-07 17 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

この動作は仕様です。

Javascriptのセミコロンはオプションです。 (ASI
パーサーは、return行の後ろに暗黙のセミコロンを挿入し、{がコードブロックを開始すると仮定します。 (ifまたはforのように)

コードブロックの最初の行は実際には有効なコードではないので、そのエラーが発生します。

これは、returnがオペランドの有無にかかわらず有効なステートメントであるために発生します。同様

、コード

return 
4; 

return; 4;として解析されます。

+2

enlightmentありがとう、私は "ASI"について聞いたことがありません。知っておいてよかった。今私はより良いコードになります。 – Ismael