質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

401閲覧

条件文の可読性を考慮した適切な書き方

foobar810

総合スコア217

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/06/06 02:41

編集2019/06/06 03:01

条件文の適切な書き方

以下の条件文は可読性の上でどちらが適切でしょうか。

  • [1] 条件式の結果を変数に格納し、if文の条件とする
  • [2] 条件式をそのまま、if文の条件とする
  • [3] その他

javascript

1 2var func1 = function(apple) { 3 var appleExists = typeof apple !== 'undefined'; 4 if(appleExists) { // [1] 条件式の結果を変数に格納し、if文の条件とする 5 // appleの処理 6 } 7} 8 9var func2 = function(apple) { 10 if(typeof apple !== 'undefined') { // [2] 条件式をそのまま、if文の条件とする 11 // appleの処理 12 } 13} 14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/06 02:49

目的はundefinedの判定ということでしょうか。 挙動が同じとういことでしたら何を持って「適切」と質問者さんは判断されるおつもりですか?
foobar810

2019/06/06 03:02

ご指摘ありがとうございます。 本文には「可読性の上で」と書いていたのですが、念のためタイトルにも追加しました。
guest

回答4

0

arguments.length

ケースバイケースてすが、質問文のケースなら、arguments.length を私は使います。

JavaScript

1function sample1 (apple) { 2 if (!arguments.length) { 3 return; 4 } 5 6 // apple の処理 7}

なお、「早期リターン」にするか、「関数の出口を一つにする」かは、ポリシーに依るところが大きいので、自分に合ったものを選ぶ事が重要と思います。

undefined 判定

歴史的に undefined はキーワードではない為、ローカル変数 undefined を定義する事が可能てす。
その為、typeof演算子やvoid演算子で確実に undefined を判定する考え方が生まれています。
typeof演算子は ReferenceErrorを回避出来ますが、void演算子は回避出来ません。
どちらでも良いケースなら、好きに選べば良いと思います。

Re: foobar8 さん

投稿2019/06/06 03:56

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

foobar810

2019/06/06 04:10

ご回答ありがとうございます。 typeoof演算子、void演算子の仕様について、わかってない点が多いので、勉強してみようと思います。
guest

0

ベストアンサー

以下の条件文は可読性の上でどちらが適切でしょうか。

場合によります

「同じ条件を複数箇所で使い回す」なら変数に入れる一択ですし、条件式が極端に長い場合も一度変数に入れたほうが可読性が増します。

一方で、typeof apple !== 'undefined'のようなシンプルな式の場合は、変数に入れるまでもないでしょう。


本題ではありませんが、appleという変数が存在する場面でtypeof apple !== 'undefined'と書くのは冗長です。apple !== undefinedもしくはapple !== void 0で十分です。

投稿2019/06/06 02:56

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

foobar810

2019/06/06 03:07 編集

ご回答ありがとうございます。 > 場合による そうなのですね。 決まった書き方があればと思ったのですが、状況次第なんですね。 > apple !== void 0 この表記は初めてみました。参考になります。
guest

0

書き方ということであれば「ヨーダ記法」ってのもありますねw
適切かどうかは別として。

投稿2019/06/06 03:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

javascript

1const func1 = (...args)=>{ 2 if(args.length>0){ 3 console.log(args[0]); 4 }else{ 5 console.log("empty"); 6 } 7}; 8 9func1(); 10func1("hoge");

投稿2019/06/06 04:09

yambejp

総合スコア114837

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問