[解決済み] カンマで区切られた複数の値を含む return 文 [重複].
質問
重複の可能性があります。
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文字分節約できます。
関連
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで複数の値を返す?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] CSSは常にJavascriptより優先されるべきか?
-
[解決済み] カンマ区切りの文字列を配列に変換するにはどうすればよいですか?
-
[解決済み] オブジェクトの配列を属性に基づいてフィルタリングする方法は?
-
[解決済み] JavaScriptの配列をカンマ区切りリストにする簡単な方法?
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] JSHintの'+'前の改行不良の説明
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列の要素をある配列位置から別の配列位置に移動する。
-
[解決済み] JSのDateからDay名
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)