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

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

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

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

Q&A

解決済

3回答

583閲覧

javascriptでのnull値判断がうまくいかない

subchan

総合スコア24

JavaScript

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

0グッド

0クリップ

投稿2018/02/06 05:54

###問題点
javascriptでのnull(空文字?)値の判断がうまくいきません。if文に入らない。
何か間違っていますでしょうか。

###ソースコード

if (msg.err!='') { msg.payload = msg.err; } if (!msg.err) { msg.payload = msg.err; } if (msg.err.length>0){ msg.payload = msg.err; }

msg.errのオブジェクトは必ず存在しています。

よろしくお願いいたします。

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

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

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

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

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

masaya_ohashi

2018/02/06 05:57

errはオブジェクトなんですか?文字列なんですか?どっちですか?
subchan

2018/02/06 06:00

オブジェクトの認識です。
masaya_ohashi

2018/02/06 06:00

そもそも1個め、3個めのifと2個めのifで相反する判定をしていますがそれは正しいのですか?
subchan

2018/02/06 06:02

いろいろ試した結果をそのまま載せてしまいました。
masaya_ohashi

2018/02/06 06:04

なにをもってして「if文に入らない」と言っていますか?msg.payloadが表示されない、ということですか?実際にconsole.log等を埋め込んでみて、本当にifの中に入っていないことを確認されましたか?
masaya_ohashi

2018/02/06 06:05

というかもしerrが空文字であれば、ifの中に入るのは2番めのifだけですが認識されていますか?
guest

回答3

0

javascriptはnullのチェックを等号の比較演算子で判断します

javascript

1var err=null; 2 3if(typeof err==="undefined"){ 4 console.log("undefined"); 5}else{ 6 if(err===null){console.log("null");} 7 if(err===0){console.log("zero");} 8 if(err===false){console.log("false");} 9 if(err===""){console.log("kara");} 10}

投稿2018/02/06 06:01

yambejp

総合スコア114843

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

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

0

見た所、msg.errには、必ずString型が入るとお見受けしますが、
下記のように複数条件つければどうでしょうか?

javascript

1 2if (typeof msg.err != 'undifined') { 3 if (msg.err != "" && msg.err !== null && msg.err.length !== 0) { 4 msg.payload = msg.err; 5 } 6}

typeofの条件は一応つけています。

投稿2018/02/06 06:06

編集2018/02/06 06:08
miyabi_takatsuk

総合スコア9528

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

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

subchan

2018/02/06 07:09

miyabi_takatsukさん msg.err = {}の場合は、msg.payloadに設定されませんよね?
miyabi_takatsuk

2018/02/06 07:31 編集

いえ、msg.err = {}の場合は、 msg.payloadに入ってしまうでしょう。 subchanさんのご質問から察するに、 if 文の条件式を見る限り、 string型での条件を想定されていると思いましたので、 オブジェクト型の変数の想定はしておりません。 msg.errがオブジェクト型になる可能性があるのならば、 BGnTnさんが答えられているものも条件式内に入れる必要があります。
subchan

2018/02/06 07:32

ありがとうございます。理解しました。
miyabi_takatsuk

2018/02/06 07:36

オブジェクトの場合は、 if (typeof msg.err == 'object') {} の条件式で取得できます。 ご参考までに。
guest

0

ベストアンサー

どの条件文も当てはまらないのはmsg.err = []です。
オブジェクトの認識ということであれば、このオブジェクトの中身の値に対してnullチェックすればよいのでは。

Javascript

1for (var i in msg.err) 2 if (msg.err[i] !== null) 3 msg.payload = msg.err[i];

投稿2018/02/06 06:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問