1. ホーム
  2. javascript

[解決済み] カンマで区切られた複数の値を含む return 文 [重複].

2022-11-06 19:15:04

質問

重複の可能性があります。

Javascriptの構文:カンマは何を意味するのか?

このパターンは何を返すのでしょうか?どのように動作するのでしょうか?

return myfunc(), myobj.myvar = someobj.prop, myobj

私はこれまでこのパターンに出会ったことはありませんが、Bing Maps Ajax Control を見ていて、何度かこのパターンに気づきました。

私が理解しているように、複数の値は返されません。では、このパターンは何をするのでしょうか。何が返されるのでしょうか。このパターンの利点は何でしょうか?

どのように解決するのか?

それは カンマ演算子 . 左側のオペランドを評価し、その結果を捨て、右側のオペランドを評価し、その結果を値として受け取ります。これは左から右への連想演算なので a, b, c と評価されます。 a と評価されます。 b で、次に c の結果を取る。 c の結果を値として受け取る。

の例では、まさにそのような感じです。

myfunc();
myobj.myvar = someobj.prop;
return myobj;

客観的な理由がない場合でも、1行で物事を行うことを好む人が本当にいます。あなたが挙げた例には何の利点もありませんし、実際、最初の 2 つのビットが最終的に返される値に関連しているように見えるので、混乱します。 (私は、あなたがそれが minified コードであると言う前にそれを書きました。明らかに、人間にとって不明瞭であることは、minified コードではなく、ソース コードにおいてのみ問題なのです)。

あなたがminifierだと言ったので。は は非常に小さい は、これが条件付きブロックの一部である場合、ミニファイアがそこに得たかもしれない可能性のある利点です。1文字か2文字を節約することができます。長いフォームがこのように見えたと仮定すると

if (someCondition) {
    myfunc();
    myobj.myvar = someobj.prop;
    return myobj;
}

...カンマ演算子を使って、ミニファイアはこんなことができます(63文字)。

if(someCondition)return myfunc(),myobj.myvar=someobj.prop,myobj

...ではなく、これ(65文字)です。

if(someCondition){myfunc();myobj.myvar=someobj.prop;return myobj}

...コードの機能を変更することなく もし に続くものは } または他の適切な文字 (またはファイルの終端) である場合、トリガとして 自動セミコロン挿入 をトリガーします。そうでない場合は ; が必要ですが、それでも1文字分節約できます。