3

私はApatana 3を使用しています。JSコードフォーマッタを少し変更して、より明確に見えるようにしました。以下はフォーマット後のコードです。エラーが発生します。

    copyOffset : function( index )
    {
        return
        {
            x : index, y : index
        };
    }

ファイアーバグは私にくれます:

SyntaxError: invalid label

私はそれを変更した場合:

    copyOffset : function( index )
    {
        return{
            x : index, y : index
        };
    }

大丈夫です、これら2つのreturnステートメントの違いを教えてくれる人はいますか?

4

2 に答える 2

7

違いは、最初のスニペットが実際には次のように解釈されることです...

copyOffset : function( index )
{
    return;
    {
        x : index, y : index
    };
}

これは自動セミコロン挿入と呼ばれます: JavaScript パーサーが完全に見えるがセミコロンがないステートメントを検出すると、それを「修正」しようとします。

はい、時には役立つこともありますが、非常に煩わしい場合があります。この記事では、この JavaScript 機能について詳しく説明します。

于 2012-10-02T09:12:09.217 に答える
1

ハハ、これは古典的なものです;)

Javasript が壊れる

return
{

新しいブロックとして扱わ{れ、暗黙的にセミコロンが挿入されるためです。

return;
{

したがって、 undefined:-D を返します

問題は、ステートメントが意味をなすときに Javasript が行末にセミコロンを挿入することです。return単独で使用できるため、Javascript はそれを完全なステートメントとして解釈し、セミコロンを挿入してコードを壊します。

実際、これが理由です。Javascript では常にこれらの改行を避けて次のように記述する必要があります。

copyOffset : function( index ){
    return{
        x : index, y : index
    };
}
于 2012-10-02T09:13:30.500 に答える