Goもそれらを挿入すると聞いたが、彼らは別のアプローチに従った
Javascriptは、解釈中にセミコロンをどのように挿入しますか?
Goもそれらを挿入すると聞いたが、彼らは別のアプローチに従った
Javascriptは、解釈中にセミコロンをどのように挿入しますか?
私が見つけた最大のものの 1 つは、これに似た、座標 (または実際には任意のオブジェクト) を返す関数があるとしましょう。
function getCoordinates() {
return
{
x: 10,
y: 10
};
}
オブジェクトが返されることを期待できますか? 違う!未定義に戻ります。インタープリターはコードをこれに変換します
function getCoordinates() {
return;
{
x: 10,
y: 10
};
}
それreturn
自体が有効なステートメントであるためです。必ず次のようにリターンを書く必要があります
function getCoordinates() {
return {
x: 10,
y: 10
};
}
Javascript は、可能であれば改行でステートメントの終わりを想定します。たとえば、次のようになります。
return
true;
次のように解釈されます。
return;
true;
return とその引数を 2 つの別個のステートメントに変換します。これはもちろん、関数に戻り値がない (未定義を返す) ことを意味します。
しばらく前に、そのことについてブログ エントリを書きました。
この特定の機能の落とし穴を教えてくれた例は、「Strangest言語機能」のこれでした。質問。(ちなみに、それが私がその質問を再開するためだった理由です-それは貴重な学習リソースです。)
良い参考資料はここにあります:Javascriptの自動セミコロン挿入のルールは何ですか?