Javascriptの変数は初期化してなかったらundefinedになるという話を書いときます。
JavaScriptでは初期化されていない変数には全て「undefined」という値が入っています。
引用元: JavaScript:undefined値の判定: Architect Note
検索エンジンで一発目にヒット、グーグルもだけど情報提供者に感謝。
変数を初期化してないとき・初期化したときの挙動
undefinedの実験で簡単なコードを書いてみます。すると以下のようになりました。
var obj; console.log(obj);//undefined obj += 'hoge'; console.log(obj);//undefinedhoge obj = ''; obj += 'hoge'; console.log(obj);//hoge
1行目でobjという変数の宣言だけ行っていますが、これだけではobj変数は初期化されていないのでundefinedになっているわけですね。4行目で文字列の連結を行っていますが、とくにエラーはおきないものの、undefinedhogeとなってよくわからないことになります。→ここで「なんだ?この?undefined?ってのは?」みたいなことにならないようにしたいところです。
7行目でようやく変数の初期化を行っています。そもそもJavascriptにおける変数の初期化とはなにか?という疑問がわいてくるかもしれません。初期化するならとにかく何か値を代入してやればOKです。上記の例では空の文字列を代入しています。これを行ったあとconsole.logで確認するとhogeとだけ表示され、undefinedはなくなりました。(undefinedがなくなったという表現はおかしいですが)
undefinedかどうか確認する
undefinedかどうかを確認するコードはいろいろあると思いますが、typeofを使って比較する方法がよく使われているそうです。下記のコードを追加して実行してみました。
console.log(typeof obj);//string //objはundefinedではないので何も表示されない↓ if(typeof obj === "undefined") console.log(obj);
obj変数をtypeofで確認してみると文字列なのでstringと返ってきました。undefinedと比較すると、偽になるので、console.logは実行されず何もおきませんでした。
まとめ
わたしみたいに「なんだ?このundefinedってのは?」というようにならないようにしましょう。Javascriptの変数は初期化していなかったらundefinedになる!!!
確認済みです。
この記事の情報は以上になります。
コメント