次の方法で共有


JScript のデータ型

JScript には、3 つの主要なデータ型、2 つの複合データ型、および 2 つの特殊データ型があります。

直接の構成要素となる主要データ型を次に示します。

  • String (文字列)
  • Number (数値)
  • Boolean (ブール値)

参照データの型となるデータ型を次に示します。

  • Object (オブジェクト)
  • Array (配列)

特殊データ型を次に示します。

  • Null (ヌル)
  • Undefined (未定義)

文字列型

文字列値は、0 個以上の Unicode 文字 (英字、数字、および句読点) strung をつなぎ合わせたものです。文字列のデータ型を使用して JScript でテキストを表示できます。文字列リテラルは、シングル クォーテーション (') またはダブル クォーテーション (") でそれらを囲むことによって、スクリプト内で使用できます。ダブル クォーテーションの記号そのものは、シングル クォーテーションで囲むことにより文字列で使用できます。また、シングル クォーテーション記号も、ダブル クォーテーションで囲むことにより文字列内で使用可能です。次に文字列の例をいくつか示します。

"今日は祝日です。"
'今日は "文化の日" です。' 
"42"
"c"

JScript では、1 文字を表す型はありません。JScript で 1 文字を表す場合は、1 文字だけの文字列を作成します。何も入っていない文字列 ("") は、空の文字列 (長さ 0 の文字列) です。

数値型

JScript では、整数と浮動小数点値の区別がありません。つまり、JScript の数値は、このいずれかです (内部的には、JScript はすべての数値を浮動小数点値で表します)。

整数値

整数値は、正の数値、負の数値、および 0 です。10 進数、8 進数、および 16 進数で表記できます。JScript では、ほとんどの数値は 10 進数で表記されます。8 進数の整数であることを示すには、先頭に "0" を付けます。各桁には 0 ~ 7 の数字のみを使用します。先頭に "0" が付いても、各桁に "8" や "9" を使用している数値があれば 10 進数として処理されます。

16 進数 ("hex") の数値であることを示すには、先頭に "0x" (x は大文字でも小文字でもかまいません) を付けます。各桁には 0 ~ 9 の数字および A ~ F の英字 (大文字でも小文字でもかまいません) を使用します。A ~ F の英字は、1 桁分の数値を表すのに使用され、10 進数での 10 ~ 15 に相当します。たとえば、0xF は 15、0x10 は 16 に相当します。

8 進数および 16 進数には負の値もありますが、小数点部分はなく、指数表記は使用できません。

浮動小数点数値

浮動小数点数値では、小数部分を含むすべての数を表すことができます。また、指数表記も使用可能です。10 の累乗の指数を表すには、大文字または小文字の "e" が使用されます。JScript では、IEEE 754 の 8 バイト浮動小数点数を使用した数値表記の既定に従って数値を表記します。表記可能な数値の上限は ±1.7976931348623157x10308、下限は ±5x10-324 になります。単一の "0" で始まり小数点を持つ数値は、10 進数の浮動小数点数として処理されます。

"0x" または "00" で始まり小数点を持つ数値では、エラーが発生します。次に JScript の数値の例を示します。

説明 10 進数では
.0001、0.0001、1e-4、1.0e-4 この 4 つの浮動小数点数は、すべて同じ値です。 0.0001
3.45e2 浮動小数点数です。 345
42 整数です。 42
0378 整数です。"0" で始まるため 8 進数のように見えますが、8 は 8 進数では使用できない数値なので、10 進数として処理されます。 378
0377 8 進数です。上記の数値より 1 だけ小さい数値に見えますが、実際にはまったく異なる数値です。 255
0.0001 浮動小数点数です。"0" で始まりますが小数点があるため 8 進数ではありません。 0.0001
00.0001 エラーです。2 つの "0" で始まるため 8 進数に見えますが、8 進数は小数部を持つことができません。 N/A (コンパイラ エラー)
0Xff 16 進数の整数です。 255
0x37CF 16 進数の整数です。 14287
0x3e7 16 進数の整数です。'e' は累乗として処理されません。 999
0x3.45e2 エラーです。16 進数は小数部を持つことができません。 N/A (コンパイラ エラー)

また、JScript では、特殊な値を示す数値も使用できます。次のような数値です。

  • NaN (非数)。数学的演算が不適切なデータ (文字列や未定義値) で実行された場合に表示されます。
  • 正の無限大。正の数値が JScript で表記するには大きすぎる場合に表示されます。
  • 負の無限大。負の数値が JScript で表記するには大きすぎる場合に表示されます。
  • 正の 0 および負の 0。JScript では、正の 0 と負の 0 を区別しています。

ブール型

文字列型および数値型では、ほぼ無限とも言える種類の値が利用できるのに対し、ブール型で使用できる数値は 2 種類だけです。リテラルの真 (true) および偽 (false) です。ブール値は、条件の有効性 (条件が真か偽か) を示す論理値を表します。

スクリプト内で行った比較の結果が、ブール値となります。次に JScript のコード例を示します。

y = (x == 2000);

この例では、変数 x の値が 2000 と等しいかどうかを調べます。等しい場合、比較の結果はブール値 true になり、変数 y に代入されます。2000 と等しくない場合は、比較結果はブール値 false になります。

ブール値は、制御構造で特に便利です。次の例では、直接ブール値を作成する比較と、比較結果のブール値を使用するステートメントをまとめています。JScript コードの例を示します。

if (x == 2000)
    z = z + 1;
else
    x = x + 1;

JScript の if/else ステートメントは、ブール値が true の場合はある動作 (z = z + 1) を実行し、ブール値が false の場合は別の動作 (x = x + 1) を実行します。

すべての式は、比較式として使用できます。0、ヌル (null)、未定義型 (undefined)、または空の文字列を評価する式は false として処理されます。それ以外の値を評価する式は true として処理されます。たとえば、次のような式を使用した場合を考えてみましょう。

if (x = y + z) // これは、希望する操作ではないかもしれません。下記を参照してください。

上記の例では、単一の等号 (代入) が使用されているため、x が y + z に等しいかどうかを調べているのではありません。上記のコードでは、y + z の値を変数 x に代入し、その結果 (x の値) が 0 に等しいかどうかを調べています。x が y + z に等しいかどうかを調べるには、次のコードを使用します。

if (x == y + z) // これは、上記のコードとは異なります。

比較処理の詳細については、「JScript のプログラム フロー制御」を参照してください。

ヌル (Null) 型

JScript のヌル型には、null という 1 つの値しかありません。関数名または変数名として null キーワードを使用することはできません。

null を含む変数は、"値がない" か "オブジェクトがない" という状態を示します。つまり、このような変数には有効な数値、文字列、ブール値、配列、またはオブジェクトは含まれません。null 値を代入することによって、変数そのものを削除せずに変数の内容を消去することができます。

JScript では、C および C++ 同様、null と 0 は区別されます。また、JScript の typeof 演算子では、null 値はヌル型ではなくオブジェクト型として扱われるので、注意が必要です。これは、以前のバージョンとの互換性を保持するための処理です。

未定義 (Undefined) 型

undefined 値が返されるのは、次のような場合です。

  • 存在しないオブジェクトのプロパティを使用した場合。
  • 宣言は行われているが、値が代入されていない変数を使用した場合。

変数の型が未定義型であるかどうかを確認することはできますが、未定義型の値との比較で特定の変数の存在は確認できません。次のコードは、変数 x が宣言されているかどうかを調べる例です。

// このメソッドは使用できません。
if (x == undefined)
    // なんらかの処理を行います。

// このメソッドも使用できません。確認してください。
// その文字列は "未定義"です。
if (typeof(x) == undefined)
    // なんらかの処理を行います。

// このメソッドは使用できます。
if (typeof(x) == "undefined")
    // なんらかの処理を行います。

未定義の値を null と比較します。

someObject.prop == null;

この比較は true です。

  • プロパティ someObject.prop に格納される値がヌルの場合。
  • プロパティ someObject.prop が存在しない場合。

オブジェクトのプロパティが存在するかどうかを調べるには、新しい in 演算子を使用できます。

if ("prop" in someObject)
    // someObject はプロパティ "prop" を持ちます。