ホームページ > 記事 > ウェブフロントエンド > JavaScriptのデータ型学習メモ_JavaScriptスキル
ECMAscript には、基本データ型とも呼ばれる 5 つの単純なデータ型があります: 未定義、Null、ブール、数値、文字列です。複雑なデータ型であるオブジェクトもあります。
未定義型
変数が var を使用して宣言されているが初期化されていない場合、変数の値は未定義です。例:
var number; document.write(number); //undefined
変数が宣言されていない場合、以下のエラーが発生します。例:
document.write(str); //错误
ただし、typeof で実行すると、宣言の有無に関係なく、未定義の値が返されます。例:
var num; document.write(typeof num); //undefined document.write(typeof str); //undefined
Null 型
typeof を使用して null を検出すると、「object」が返されます。例:
var num = null; document.write(typeof num); //object
実際、未定義の値は null 値から派生するため、それらが等しい場合は true を返します。例:
alert(null == undefined); //true
ここで注意すべき点は、オブジェクトを保存することを目的とした変数が実際にオブジェクトを保存していない限り、その変数は null 値の保存を明示的に許可する必要があるということです。これは、null と未定義を区別するのに役立ちます。例:
var num1 = null; var num2; document.write(typeof num1 + " " + typeof num2); //object undefined
ブール型
値を対応するブール値に変換するには、変換関数 Boolean() を使用できます。例:
var str = "helloworld"; document.write(Boolean(str)); //true
書籍『JavaScript Advanced Programming Design』の第 3.4.4 章には、さまざまなデータ型とそれに対応する変換規則の表が記載されています。おそらく次のタイプがあります:
var str = "helloworld"; if (str){ document.write("hellothere"); } //hellothere
16 進リテラル値の最初の 2 桁は 0x であり、その後に任意の 16 進数字 (0 ~ 9 および A ~ F) が続く必要があります。例:
var num1 = 070; //八进制的56 var num2 = 032; //八进制的32 var num3 = 079; //错误的八进制(>7) var num4 = 09; //错误的八进制(>7)
var num1 = 0xA; //十六进制的10 var num1 = 0xa; //也是十六进制的10(字母不区分大小写)
値の範囲
var a = 0.1; var b = 0.2; if (a + b == 0.3){ document.write("you are right") } //因为0.1 加上0.2 实际上等于0.30000000000000004
ナン
document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false
数値変換
document.write(isNaN("a")); //true; document.write(isNaN("324")); //false; document.write(isNaN(true)); //false; document.write(isNaN(false)); //false; document.write(isNaN(NaN)); //true;
ブール値の場合、true と false は 1 と 0 に変換されます。
数値の場合は変更されません。null 値の場合は 0 に変換されます。
未定義の場合は NaN を返します。文字列の場合は、次のルールに従います:
数値のみの場合は、10 進数値に変換します。
parseInt()的转换规则如下:
下面是具体的例子:
document.write(parseInt("fds")); //NaN document.write(parseInt("")); //NaN document.write(parseInt("1111112abc")); //1111112 document.write(parseInt("-1111112abc")); //-1111112 document.write(parseInt("+1111112abc")); //-1111112 document.write(parseInt("0xa")); //10 document.write(parseInt("0022.00009")); //22 document.write(parseInt("070")); //ECMAScript 3认为是56(八进制), ECMAScript 5认为是70(十进制)
另外需要注意的是,ECMAScript 5已经不具备解析八进制值的能力了所以为了消除这个问题,可以为这个函数提供第二个参数:转换时使用的基数(多少进制),具体如下:
document.write(parseInt("070",10)); //70 document.write(parseInt("070",8)); //56 document.write(parseInt("070",16)); //112
多数情况下,最好默认设置成10进制。
parseFloat()的转换规则如下:
下面是具体的例子:
document.write(parseFloat("421")); //421 document.write(parseFloat("0421.32.1")); //421.32 document.write(parseFloat("0xaafd")); //0 document.write(parseFloat("070")); //70 document.write(parseFloat("070abc")); //70 document.write(parseFloat("")); //NaN document.write(parseFloat("abc")); //NaN
String 类型
要把一个值转换成字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。如下:
document.write((533).toString(10)); //"533" document.write((0xa).toString(10)); //"10" document.write((0xa).toString(2)); //"1010" document.write((true).toString(10)); //"true" document.write((false).toString(10)); //"false"
另外需要注意的是,null 和 undefined 不能转换。
document.write((null).toString(10)); // document.write((undefined).toString(10)); //
如果不知道需要转换的数值是否是null 或者undefined 则应该使用转型函数String(),如果是null 会返回"null"如果是undefined 会返回"undefined"。如下:
document.write(String(null)); //"null" document.write(String(undefined)); //"undefined"
另外在下一篇文章中再详细介绍Object 类型。
以上就是关于JavaScript数据类型的简单介绍,希望对大家学习JavaScript数据类型有所帮助。