http://qiita.com/lrf141/items/ff1fa4741e4cd612b128
この記事は最終更新日から1年以上が経過しています。
javascriptでの変数と型、値
変数とはプログラム中の値を保持して置くためのものです。
JavaScriptでの変数とは一般的に
JavaScriptでの変数とは一般的に
と定義する。
そしてJavaなどの言語と同様に基本型とオブジェクト型が存在します。
そしてJavaなどの言語と同様に基本型とオブジェクト型が存在します。
JavaScriptにおいて、基本型とは何か
データ型の定義をvarで済ませてしまうのでわかりにくいのですが
- 数値(1,2,3.14 ....)
- 文字列("hello,world")
- 論理型(true,false)
が基本型として挙げられます。
そして最も注意しなければならない事は、nullやundefindと言った特殊な方が実は基本型であるということです
そして最も注意しなければならない事は、nullやundefindと言った特殊な方が実は基本型であるということです
それならオブジェクト型とは何か
ざっくりと説明すれば、「基本型以外です」
ここで重要なのはオブジェクト型とは何かということではなく、オブジェクトが「プロパティの集合体である」という点です。
ここで重要なのはオブジェクト型とは何かということではなく、オブジェクトが「プロパティの集合体である」という点です。
プロパティには基本型やオブジェクトを格納することができます。また配列や関数もオブジェクト型であることに注意してください。
そして1つの例として以下の記述が挙げられます
そして1つの例として以下の記述が挙げられます
上記の例で気がついたかもしれませんが、同じオブジェクト型の配列には順番があるが
例で取り上げたオブジェクトには順番がありません。
例で取り上げたオブジェクトには順番がありません。
実は順番が無いのがオブジェクト型の特徴であって、配列は特殊なオブジェクト型と考えます。
そして注意すべきは関数をオブジェクトとした時です。
関数は他のオブジェクト型と違って、振る舞いをつまり何かしらの処理を持ちます。
さっきの例でも示したように
関数は他のオブジェクト型と違って、振る舞いをつまり何かしらの処理を持ちます。
さっきの例でも示したように
と言った記述で変数をオブジェクト型としプロパティを代入しました
そしてnew演算子で代入されたpeopleという関数をコンストラクタと言います。
またコンストラクタはオブジェクトのクラスとなります。
そしてnew演算子で代入されたpeopleという関数をコンストラクタと言います。
またコンストラクタはオブジェクトのクラスとなります。
javascriptではクラスをjavaなどのオブジェクト指向言語のように明確に定義できませんが
一般的に、コンストラクタを使って初期化されるオブジェクトのまとまりのことです
一般的に、コンストラクタを使って初期化されるオブジェクトのまとまりのことです
といったものがクラスとオブジェクト、コンストラクタとしてわかりやすい例です
実は知らないうちにつかっていたり...
実は知らないうちにつかっていたり...
数値、文字列、論理型、そしてnull,undefind
数値とは
数値とは一般に整数や小数点を含む、ざっくり言えば数字です。
また進数も扱うことができます。
また進数も扱うことができます。
あまり関係ありませんが用語として、プログラム内で定義された整数を整数リテラルと呼んだりします
それと進数で特に8進数はサポートされていなかったりするので利用には注意が必要です
ただしstrictモードでは使えません。
ただしstrictモードでは使えません。
そして地味に大切なのが浮動小数点、つまり小数を含むリテラルです
一般的に、変数宣言と同様に定義できますが
累乗の形の時に注意が必要です。
説明するより以下のコードで例を示します
累乗の形の時に注意が必要です。
説明するより以下のコードで例を示します
ここで注意が必要なのは数字を小数点第2位まで記述する必要があるのです
浮動小数点なので、eの前に数字を定義するとき整数で定義するとコンパイルエラーになります。
浮動小数点なので、eの前に数字を定義するとき整数で定義するとコンパイルエラーになります。
もう一点注意が必要なのは、小数点を含む数の誤差についてです。
これまで紹介したもの以外にも、絶対値や三角関数、対数などもMathクラスを使うことで表現できますがここでは紹介しません
ただ無限大と0だけは注意が必要なので少しだけまとめます。
高校数学で数学Ⅲをとったことのある人には馴染みのある無限大ですが、これはJavaScriptでも扱うことができます。
そういった知識がある人がつまずくかもしれない点があるので以下のコードを参照してください
高校数学で数学Ⅲをとったことのある人には馴染みのある無限大ですが、これはJavaScriptでも扱うことができます。
そういった知識がある人がつまずくかもしれない点があるので以下のコードを参照してください
文字列
文字列とは以下のようにシングルクォーテーションやダブルクォーテーションで囲まれた文字の集まりのことです。
これ自体は簡単です。そしてエスケープシーケンスと呼ばれるものも他の言語と大差ありません。
しかし、javascriptでは変数のデータ型が宣言時にvarで統一されているため、データ型に関してはかなり緩いです。
そのため数値などと結合してもエラーになりません。
しかし、javascriptでは変数のデータ型が宣言時にvarで統一されているため、データ型に関してはかなり緩いです。
そのため数値などと結合してもエラーになりません。
文字列には、数値でいうようなMathクラスが持つメソッドを使うように
インスタンスを取らなくても、いろいろなメソッドが用意されています。
詳しくはリファレンスを参照してください
インスタンスを取らなくても、いろいろなメソッドが用意されています。
詳しくはリファレンスを参照してください
ここで示したように文字列は比較的容易に扱うことができます。
論理型
論理型と聞くと、難しそうと思いますが極端に言えば正しいか、間違っているかです
数学的に言うなら、真か偽か
英語ならtrue or falseです
数学的に言うなら、真か偽か
英語ならtrue or falseです
それで、javascriptではこう記述します
これで論理型は終わりです。
null,undefind
nullやundefindは最初に言ったように特殊な基本型です。
ですが不思議なことにnullを定義した変数にtypeofを用いると何故か"object"と返ってきます。
本来nullはオブジェクトが存在しない事を示します。
またオブジェクト以外にも基本型、これに値が無いことを示すにもnullは使えます
本来nullはオブジェクトが存在しない事を示します。
またオブジェクト以外にも基本型、これに値が無いことを示すにもnullは使えます
ただし文字列のから文字とnullは全くの別物です
そして問題のundefind。
これは少しだけ厄介なものです
これは少しだけ厄介なものです
というのも、undefindは未定義を示すからです
値は存在しないが、未定義という意味なのです
値は存在しないが、未定義という意味なのです
例えば、初期化されていない変数などが当てはまります。
ただし未定義でも値は存在しないので
また存在しないことから特にオブジェクト型変数のプロパティにアクセスするとtypeErrorになります。
この点には注意が必要です。
この点には注意が必要です。
0 件のコメント:
コメントを投稿