データ型
文字型
リテラル
文字列のリテラルを表すには、対になったダブルクォート(“)かシングルクォート(‘)で囲む。
1 2 |
x = "abcd"; y = 'efgh'; |
エスケープ文字
\n | NewLine(改行文字) |
\f | フォームフィード |
\b | バックスペース |
\r | キャリッジリターン |
\t | タブ |
\’/\” | シングルクォート/ダブルクォート |
\\ | バックスラッシュ |
\0nn/\0onn | 8進数 |
\xnn | 16進数nnによる文字コード指定(ex. ‘A’=’\x41’) |
\unnnn | Unicode文字(ex. ‘あ’=’\u3042’) |
数値型
JavaScriptでは、内部的にすべての数値が浮動小数点として扱われる。
整数値の表現
10進数 | 数字の列で指定。先頭の数字は0(ゼロ)以外。 |
8進数 | 先頭が0(ゼロ)である数字の列で指定。 |
16進数 | 先頭”0x”に続く0~9, a~fの列で指定、 |
- 8進数、16進数では、負の値を表すことはできるが、小数部分はなく、浮動小数点表記は使用できない。
以下の例は、10進、8進、16進の各数値の演算結果をconsole.logに出力する。
1 2 3 4 5 6 7 8 9 10 11 12 |
function test_var1() { var num_dec = 100; var num_oct = 0100; var num_hex = 0x100; console.log( "Numeric Test" ); console.log( num_dec ); console.log( num_oct ); console.log( num_hex ); console.log( num_dec + num_oct + num_hex); } |
浮動小数点数の表現
以下の4つの表現は全て同じ値を表す。
- 0.0001
- .0001
- 1e-4
- 1.0e-4
論理型(Boolean)
trueとfalseの二値。なお、比較式において以下の評価はすべてfalseとして解釈される。
- 0
- null
- undefined
- 空の文字列
特殊な値
Null | Null型にはnullという値が1つだけある。typeof演算子ではnull値はnull型ではなくObject型として扱われる。 |
undefined | 未定義の変数を参照した場合に返される。 |
NaN | 不適切な値で、以下の場合に返される。
|
Infinity | 正の無限大。計算結果が正の数値でオーバーフローした場合や、通常の正の数値をゼロで割った場合に返される。 |
-Infinity | 負の無限大。計算結果が負の数値でオーバーフローした場合や、通常の負の数値をゼロで割った場合に返される。 |
演算
代入演算子
代入演算子は、文字列/数値のリテラル/変数を変数に割り当てる。
1 2 3 4 |
str = "abc"; val = 123; newStr = str; newVal = val; |
文字列演算子
結合演算子
“+”演算子は2つの文字列を結合。
1 |
a = "abc" + 'def'; |
数値演算子
算術演算子
Javaと同じ算術演算子+、-、*、/、%(剰余)、インクリメント/デクリメント演算子++、–がある。
比較演算子
Javaと同じ演算子==、!=、<、>、<=、>=がある。
論理演算子
Javaと同じ演算子、&&、||、!(否定)がある。
複合代入
演算結果を代入する場合、複合代入演算子の短縮表記も可能。
1 2 |
x += y x <<= y |
条件演算子
==、!= | 等しい/等しくない |
===、!== | 同一である/同一でない |
たとえば文字列と数値を比較するとき、==を用いると文字列がNumber型に変換され比較される。
一方===では型変換は行われない状態で、厳密にその内容が等しいかどうかが比較される。
typeof演算子
1 |
typeof <em>引数</em> |
引数の型に応じて、以下の文字列が返される。
数値 | number |
文字列 | string |
オブジェクト | object |
配列 | object |
関数 | function |
論理型 | boolean |
null | number |
NaN | number |
undefined | undefined |
文字列と数値が混在した演算
以下のルールに従う。
- 数値同士の演算の結果は数値
- 二項のうち少なくとも一つが文字列の場合、数値であっても文字列と評価し、結果は文字列
- 先頭から演算を進め、数値が続く限りは数値演算を続け、一旦文字列演算になると以降は全て文字列演算として評価。
1 + 2 | 3 |
“1” + 2 | “12” |
1 + “2” | “12” |
1 + 2 + “3” | “33” |
1 + “2” + 3 | “123” |
“1” + 2 + 3 | “123” |