数値
すべての数値は浮動小数点。IEEE754標準の64bit浮動小数点形式。
数値リテラルはマイナス記号で反転できるが、マイナス記号は単項演算子とみなされ、数値リテラルの一部ではない。
整数リテラル
8進数はECMAScriptでは規定されていないので、使用しないほうがいい。
浮動小数点リテラル
[数値][.数値][e|E[(+|-)]数値]
6.02e23 -> 6.02x10^23
特殊な数値
浮動小数点値の表現可能最大値を超えると「Infinity」となる。マイナス側は「-Infinity」
未定義な演算結果はNaN(Not a Number)になる。これは自分自身を含めていかなる数値とも合致しない。
isNaN()という関数を使用する。
上記のInfinity、-Infinity、NaNでないことをテストするにはIsFinite()
Finite([形]有限な)
エスケープシーケンス
- \xXX
- Latin-1
- \xXXXX
- Unicode
- \XXX
- 8進数Latin-1 ECMAScript v3ではサポートされてないので使用しない
文字列の操作
文字列中の特定の文字は配列表記を用いて読み込み可能。
しかし、ECMAScript v3 でサポートされてないので、charAt()を使用する
last_char = s.charAt(s.length - 1);
数値から文字列への変換
var n = 100;
var str = n + "";
var str = String(n);
var str = n.toString(10); //10進数で。省略可
有効桁数や指数表示を指定して数値->文字列変換
JS1.5以前は欠点があり、小数点以下の桁数の指定や、指数表示の指定方法が用意されていなかった。
JS1.5ではNumberクラスに数値から文字列に変換するメソッドが3つある。
// すべて四捨五入される
var n = 123456.789;
//小数点桁数指定
n.toFixed(0); //123457
n.toFixed(2); //123456.79
//指数表示指定
n.toExponential(1); //1.2e+5
n.toExponential(3); //1.235e+5
//有効桁数指定。有効桁数より大きい場合は、指数表示
n.toPrecision(4); // 1.235e+5
n.toPrecision(7); // 1.23456.8
文字列から数値への変換
"5"*"2"
"5"-0
Number(" 5 ") //前後に空白があってもいい
parseInt("15px") //15 後の文字列は無視される。第2引数で進数指定できる。
parseFloat("15.5px") //15.5
+は文字列結合と解釈されるので不可。
parseInt,parseFloatで数値に変換できないとNaNになる。
論理値への型変換
論理値コンテキストで変換されるが、明示的に変換する場合は
Boolen(x);を使用するか、!!xとする。
- trueに変換されるもの
- 0とNaN以外,
- 空文字列以外,
- nullでないオブジェクト、関数、配列
オブジェクト
配列
連想配列と異なり、インデックスが正の整数。
コンストラクタ new Array()は new Array(1,2)は[1,2]を表すが、new Array(2) は配列の大きさを表し[undefined,undefined]になる。
これが紛らわしいので、配列はリテラルで記述するのがいい。
基本型ではないオブジェクト
Dateオブジェクト
基本型ではないが、Dateコンストラクタで日時の設定取得ができる。
RegEXPオブジェクト
リテラルのほうが簡潔だが、リテラルはコンパイル時に一度しか生成されないので、
動的に生成する場合はコンストラクタを使う。
Errorオブジェクト
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
が定義されている。
null値(=値がない)
CやC++ではnullは0と同じだがJSは違う。nullはnullであり、コンテキストにより変化する。
- コンテキスト
- 論理値コンテキストではfalse
- 数値コンテキストでは、0
- 文字列コンテキストでは"null"
undefined (=未定義値)
- 宣言されているが値が設定されていない(初期化されていない)変数
- 存在しないオブジェクトプロパティ
を使おうとすると未定義値が返ってくる。
- (null == undefined)はtrue
- (null === undefined) はfalse
- コンテキスト
- 論理値コンテキストではfalse
- 数値コンテキストではNaN
- 文字列コンテキストでは"undefined"
型変換まとめ表
本のP39
0 件のコメント:
コメントを投稿