1.未定義型
未定義型には値が 1 つだけあり、それが特別な unknown です。変数が var を使用して宣言されているが初期化されていない場合、変数の値は未定義です。例:
var message;
alert(message == undefined); //true
ログイン後にコピー
この例では、変数メッセージを宣言するだけで、初期化はしません。この変数を未定義のリテラルと比較すると、それらが等しいことがわかります。この例は、次の例と同等です。 var message = undefined;
alert(message == undefined); //true
ログイン後にコピー
この例は、変数 message を未定義の値で明示的に初期化します。ただし、初期化されていない値はデフォルトで未定義になるため、これを行う必要はありません。
2. Null 型
Null 型は値を 1 つだけ持つ 2 番目のデータ型であり、この特別な値は null です。論理的な観点から見ると、null 値は null オブジェクト ポインターを表します。次の例に示すように、typeof 演算子を使用して null 値を検出すると「object」が返されるのはこのためです。 将来オブジェクトを保持するために使用される変数を定義する場合は、その変数を別の値ではなく null に初期化することをお勧めします。このようにして、次の例に示すように、null 値を直接チェックすることで、対応する変数が既にオブジェクトへの参照を保持しているかどうかを知ることができます:
var car = null;
alert(typeof car); // "object"
ログイン後にコピー
実際、未定義の値は null 値から派生しています。したがって、ECMA-262 では、等価性テストが true を返す必要があると規定しています:
if (car != null){
// 对car 对象执行某些操作
}
ログイン後にコピー
ここで、null と unfined の間の等価演算子 (==) は常に true を返しますが、この演算子のオペランドは次のように変換されることに注意してください。比較目的 (これについてはこの章で後ほど説明します)。 null と unknown はこのような関係にありますが、用途はまったく異なります。前に述べたように、いかなる状況においても変数の値を明示的に未定義に設定する必要はありませんが、同じ規則は null には適用されません。言い換えれば、オブジェクトを保持することを意図した変数が実際にはオブジェクトを保持しない限り、その変数には明示的に null 値を保持させる必要があります。そうすることで、null オブジェクト ポインターとしての null の規則が反映されるだけでなく、null と未定義をさらに区別するのにも役立ちます。
3.Boolean型
この型には、trueとfalseの2つのリテラル値のみがあります。これら 2 つの値は数値としては同じものではありません。
つまり、true は必ずしも 1 に等しいとは限りませんし、false は必ずしも 0 に等しいとは限りません。以下は、
Boolean型の値を変数に代入する例です:
alert(null == undefined); //true
ログイン後にコピー
Boolean型のリテラル値trueとfalseは大文字と小文字が区別されることに注意してください。つまり、True と False (およびその他の大文字と小文字の混合形式) はブール値ではなく、単なる識別子です。ブール型のリテラル値は 2 つだけですが、ECMAScript のすべてのタイプの値は、これら 2 つのブール値と同等の値を持ちます。値を対応するブール値に変換するには、次の例に示すように、変換関数 Boolean() を呼び出すことができます。
var found = true;
var lost = false;
ログイン後にコピー
この例では、文字列メッセージがブール値に変換されます。 、値は messageAsBoolean 変数に保存されます。 Boolean() 関数は、任意のデータ型の値に対して呼び出すことができ、常にブール値を返します。戻り値が true か false になるかは、変換対象の値のデータ型とその実際の値によって異なります。次の表に、さまざまなデータ型とそれに対応する変換ルールを示します。
データ型
trueの値に変換 | falseの値に変換 | ブール値 true |
false | 文字列 | 空でない文字列 |
""(空の文字列) | 数値 | ゼロ以外の任意の数値 (含むinfinity) B0 および NanjObject Unknown |
任意のオブジェクト | Null | |
Unknown | undefined |
4.Number类型
5.NaN
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0 都会导致错误,从而停止代码执行。但在ECMAScript 中,任何数值除以0 会返回NaN①,因此不会影响其他代码的执行。NaN 本身有两个非同寻常的特点。首先,任何涉及NaN 的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN
与任何值都不相等,包括NaN 本身。例如,下面的代码会返回false:
alert(NaN == NaN); //false
针对NaN 的这两个特点,ECMAScript 定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回true。请看下面的例子:
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值1)
ログイン後にコピー
6.数值转换
有3 个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。这3 个函数对于同样的输入会有返回不同的结果
以上就是JavaScript中数据类型详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!