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

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

新規登録して質問してみよう
ただいま回答率
85.49%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

3回答

7813閲覧

初期値をundefinedにするのは誤りですか?

退会済みユーザー

退会済みユーザー

総合スコア0

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2017/07/13 22:28

編集2017/07/13 22:31

JavaScript

1const defaultState = { 2 isUserAuthenticated: false, 3 error: { 4 message: '', 5 code: undefined, // or null??? 6 } 7};

例えば、エラーコードを番号にしていて、number型で扱いたい場合なのですが、初期値に0とかは使いたくありません。そういった場合、undefinedにするのはOKなのでしょうか?

もしくはnullにすべきですか?

codeをそもそも'123'みたいに文字列にすべきな気もしますが、他のケースの場合でも、undefinedって初期値にして良いのかなって思ったことがあったので、ご回答いただけると嬉しいです!

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

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

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

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

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

coco_bauer

2017/07/14 00:13

初期値である事を検出する必要があるのでしょうか? また、codeに値を入れた後に初期値(undefined?)に戻すというような使い方は想定されてるのでしょうか?
退会済みユーザー

退会済みユーザー

2017/07/14 02:16

codeに値を入れた後は初期値に戻すことは考えてませんでしたが、言われてみれば、いろんなところから参照される可能性があるアプリケーションのスタートなので、認証エラーがない場合はエラーコードを初期値に戻すかもしれません!
退会済みユーザー

退会済みユーザー

2017/07/14 02:18

あ、やっぱり戻さないかもしれません。。。すみません、まとまってなくて。react、reduxなので、初期値にスタート戻してしまうと再レンダリングのサイクルが始まってしまいますね。
guest

回答3

0

undefinedでもOKと思いますが、個人的にはnullをセットしています。
理由としては、undefinedは予約語ではないため、自分のあずかり知らないところでvar undefined = 0;のような超イレギュラーな処理をされ、ハマった経験があるためです。
https://jsfiddle.net/takmatz/vcmug9nd/

投稿2017/07/14 02:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/07/14 02:13

わー!予約語ではないのですね!知らなかったです。undefinedを変数名にされるとか想定外過ぎますね。。。 参考になる御回答ありがとうございます!
miyabi-sun

2017/07/14 03:51

まぁNullをセットするのが主流かと思いますが、 undefindが欲しいなら`var hoge = void 0`がベストプラクティスですね。
退会済みユーザー

退会済みユーザー

2017/07/14 10:03

void 0なんて初めてみました!こちらのコメント見た後にたまたまbabelのコンパイルされたやつみてたら、void 0が早速ソースコード内にありました(笑)
guest

0

ベストアンサー

コードの見た感じからして、redux用の初期stateを作っているところでしょうか。
その場合だと、「error/codeは文字列またはundefinedである」と自分の中で定義してコード中でもその条件を保てるなら、初期stateをこう書いてしまうこともできます。

js

1const defaultState = { 2 isUserAuthenticated: false, 3 error: { 4 message: '' 5 } 6};

要は、undefinedであるならばキーごと書かない、と。
でもこれだとstateオブジェクトの構造がdefaultStateオブジェクトを一目見ても把握できないじゃないか、と思われるなら、「error/codeは文字列またはnullである」と定義してnullを初期値にするという方向へも行けます。

正直、undefinedはコードに持ち込みたくない存在です。
おそらくundefinedは、配列や連想配列のキーが見つからなかったときにも実行を止めずにできる限り処理が続けられるようにと用意されたオブジェクトです。しかしオブジェクトとして用意されてしまったためおかしな動きもします。

js

1var a = {key: undefined}

と書くと、aの内容は{}でしょうか、{key: undefined}でしょうか?
正解は後者の{key: undefined}の方なのですが、これだめでしょ、undefinedが格納できてしまっては、配列アクセスしてundefinedが得られたとしても、最初からそのキーがなかったのかそのキーでundefinedが格納されていたのか区別つきません。
こんなおかしいundefinedを自分のコードの中には登場させたくないと考えると、せめてnullを使っていきたいなとなります。

投稿2017/07/14 03:17

yuba

総合スコア5568

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

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

退会済みユーザー

退会済みユーザー

2017/07/14 03:49

まさにreduxです!初期stateでcodeは書かないというやり方が良い気がしました!ありがとうございます!
guest

0

NaN なんてどうでしょう?
わかればナンでもいいとは思いますが

投稿2017/07/14 03:31

x_x

総合スコア13749

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

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

退会済みユーザー

退会済みユーザー

2017/07/14 03:46

確かにナンか良さそうな気がしますね!
x_x

2017/07/14 09:36

ナンだってー!
退会済みユーザー

退会済みユーザー

2017/07/14 10:01

ナンというかもはや!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問