No.6 null/undefined、Date/Errオブジェクト
前回は、「No.5 配列」を学びました。
今回は、その他のオブジェクトや少し特殊な型について触れていきます。
Dateオブジェクト
「Dateオブジェクト」または「Date型」は日付を扱うものになります。
正確には基本的なデータ型には含まれませんが、JavaScriptが提供しているこのオブジェクト(型)を利用することによりデータ型として扱うことが出来ます。
1 2 3 4 5 6 | var today = new Date(); // 今日の日付 // 月は1~12ではなく、0~11のため注意が必要です var christmas = new Date(2013, 11, 25); // クリスマスの日付 console.log(today); // Tue Aug 27 2013 21:35:01 GMT+0900 (JST) console.log(christmas); // Wed Dec 25 2013 00:00:00 GMT+0900 (JST) |
その他にもDate型に用意されているメソッドを利用することにより、様々な値を取得することが出来ます。
1 2 3 4 5 6 7 8 9 | var christmas = new Date(2013, 11, 25); // クリスマスの日付 // setFullYearメソッドで既に生成されているDateオブジェクトの年を変更したり // getFullYearメソッドでDateオブジェクトの年を取得したり出来ます christmas.setFullYear(christmas.getFullYear()-1); // Dateオブジェクトに設定されている日付の曜日を取得します // 取得出来る値は 0 ~ 6 の値です // ['日', '月', '火', '水', '木', '金', '土'] christmas.getDay(); |
これらのメソッドを応用すると、現在日時から「明日」「明後日」「昨日」などの取得も出来るため非常に便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 今日の情報取得 var nDate = new Date(), now = { y: nDate.getFullYear(), m: nDate.getMonth(), d: nDate.getDate() }; // 明日の情報生成 var tDate = new Date(now.y, now.m, now.d - 1), tomorrow = { y: tDate.getFullYear(), m: tDate.getMonth(), d: tDate.getDate() }; |
null値
JavaScriptのキーワードの null は、「値が無い」ことを表す特殊な値で、他の数値や文字列などとは全く異なるユニークな値になっています。
ある変数の値が null の場合は、その変数に値が何も入っていない(要するに空)ことを指します。
1 | var a = null; // 意図的に変数の中身を空にしている |
JavaScriptでnullは、よく何かしらの処理をして途中で失敗または空のデータを返すなどの時にnullが用いられたりします。
undefined値
そして、一見 null と同じように見えなくもない undefined という型もあります。
先ほどの null は、値が空ということを明示的に示すものというような内容でしたが、undefined は、値が未定義ということを明示的に示すものになります。
どのようなときに現れるかというと
1 2 3 4 5 6 | var a; var b = {name: 'Sample'}; console.log(a); // undefined console.log(b.name); // Sample console.log(b.sex); // undefined |
といった具合に、変数宣言のみを行い値の定義が未定義の場合やオブジェクトの未定義プロパティを参照した場合などに、この undefined が返却されます。
Errorオブジェクト
JavaScriptでは何かしらのエラーが発生した際に、そのエラーを表すオブジェクトをいくつか定義しています。これらは、JavaScript内部でエラーが発生した際に、そのエラーオブジェクトを「スロー(throw)」します。
エラーオブジェクトはmessageプロパティを持っているため、ブラウザはエラーが発生した際にthrowされたエラーオブジェクトを取得し、エラーメッセージを表示させるなどの振る舞いを行います。
1 2 3 4 5 6 7 | var a, b = null; // nullやundefinedなどの空の値に対して // プロパティ参照などを行うとJavaScriptエラーが起きます console.log(a.name); // Error console.log(b.sex); // Error |
1 2 3 4 5 6 7 8 9 10 | // 自身でエラーオブジェクトをthrowすることも可能です function setup(v) { var me = this; if (v) { // code... } else { throw new Error('エラーです'); } } |