0

Goもそれらを挿入すると聞いたが、彼らは別のアプローチに従った

Javascriptは、解釈中にセミコロンをどのように挿入しますか?

4

3 に答える 3

13

私が見つけた最大のものの 1 つは、これに似た、座標 (または実際には任意のオブジェクト) を返す関数があるとしましょう。

function getCoordinates() {
    return
        {
            x: 10,
            y: 10
        };
}

オブジェクトが返されることを期待できますか? 違う!未定義に戻ります。インタープリターはコードをこれに変換します

function getCoordinates() {
    return;
        {
            x: 10,
            y: 10
        };
}

それreturn自体が有効なステートメントであるためです。必ず次のようにリターンを書く必要があります

function getCoordinates() {
    return {
            x: 10,
            y: 10
        };
}
于 2010-10-29T17:13:44.373 に答える
4

Javascript は、可能であれば改行でステートメントの終わりを想定します。たとえば、次のようになります。

return
true;

次のように解釈されます。

return;
true;

return とその引数を 2 つの別個のステートメントに変換します。これはもちろん、関数に戻り値がない (未定義を返す) ことを意味します。

しばらく前に、そのことについてブログ エントリを書きました。

于 2010-10-29T17:13:24.203 に答える
2

この特定の機能の落とし穴を教えてくれた例は、「Strangest言語機能」のこれでした。質問。(ちなみに、それが私がその質問を再開するためだった理由です-それは貴重な学習リソースです。)

良い参考資料はここにあります:Javascriptの自動セミコロン挿入のルールは何ですか?

于 2010-10-29T17:08:27.840 に答える