0


2

Javascriptの挿入 ";"を聞いたことがあります自動的に問題が発生する可能性があります

Goもそれらを挿入すると聞きましたが、別のhttp://groups.google.com/group/golang-nuts/msg/7facb7856f017791[approach]

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

任意の参照が役立ちます

3 Answer


12


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

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

あなたは正しいオブジェクトを取り戻すことを期待していますか? 違う! 未定義に戻ります。 インタープリターはコードをこれに変換します

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

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

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


4


Javascriptは、可能な限り改行があるとステートメントの終わりを想定します。 例えばこれ:

return
true;

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

return;
true;

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

しばらく前に、http://blog.guffa.com/2010/02/javascript-almost-not-line-based/ [ブログエントリ]を書きました。


2


この特定の機能の落とし穴を教えてくれた例は、「Strangest言語機能」のhttps://stackoverflow.com/questions/1995113/strangest-language-feature/2003277#2003277[this one]でした。質問。 (これが、私がその質問を再開する理由でした-ところで、それは貴重な学習リソースです。)

良い参考資料はこちらにあります:https://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion[Javascriptの自動セミコロン挿入のルールは何ですか?]