ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのデータ型学習メモ_JavaScriptスキル

JavaScriptのデータ型学習メモ_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:18:241346ブラウズ

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 章には、さまざまなデータ型とそれに対応する変換規則の表が記載されています。おそらく次のタイプがあります:

  • データ型が String の場合、空でない文字列はすべて true に変換されます。
  • データ型が Number の場合、false に変換される 0 と NaN を除き、その他はすべて true に変換されます。
  • データ型が Object の場合 (null を除く)、
  • に変換されます。
  • データ型が Unknown の場合、n/a は true に変換され、unknown は false に変換されます。
  • ここで、if ステートメントでは、応答を条件として自動的に実行するブール変換がよく使用されることに注意してください。例:
数値型

整数は 10 進数で表現されるだけでなく、8 進数または 16 進数のリテラル値でも表現できます。8 進数のリテラル値の最初のビットは 0 で、その後に一連の 8 進数 (0 ~ 7) が続きます。例:
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(字母不区分大小写)

値の範囲

ECMAScript が表現できる最大値と最小値は Number.MAX_VALUE と Number.MIN_VALUE に格納されます。数値が有限かどうかを判断するには、isFinite() 関数を使用します。例:
var a = 0.1;
var b = 0.2;
if (a + b == 0.3){
  document.write("you are right")
} //因为0.1 加上0.2 实际上等于0.30000000000000004

ナン

0 を 0 で割ると NaN が返され、正の数を 0 で割ると無限大が返され、複素数は -Infinity を返します。第 2 に、NaN は、それ自体を含め、どの数値とも等しくありません。さらに、関数 isNaN() は、このパラメータが「数値ではない」かどうかを判断するのに役立ちます。例:
document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false

数値変換

数値以外の値を数値に変換できる関数は、Number()、parseInt()、parseFloat() の 3 つです。
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;
Number() の変換規則は次のとおりです。

ブール値の場合、true と false は 1 と 0 に変換されます。

数値の場合は変更されません。

null 値の場合は 0 に変換されます。

未定義の場合は NaN を返します。

文字列の場合は、次のルールに従います:





数値のみの場合は、10 進数値に変換します。

  • 浮動小数点形式の場合は、対応する浮動小数点値に変換します。先頭のゼロも無視されます。
  • 16進数の場合は10進数に変換されます。
  • 文字列が空の場合は 0 に変換されます。
  • その他の場合は NaN に変換されます。
  • 詳細については、以下の例を参照してください:

    parseInt()的转换规则如下:

    • 如果第一个字符不是数字字符或者符号,parseInt()会返回NaN。
    • 用parseInt()转换空字符串会返回NaN。
    • 如果第一个字符是数字字符,它会继续解析第二个字符,直到遇到了一个非数字字符.

    下面是具体的例子:

    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()的转换规则如下:

    • 与parseInt()类似,不同的是字符串第一个小数点是有效的,而从第二个小数点开始包括第二个小数点是无效的。
    • 他不能解析十六进制数值!!!
    • 他只能解析十进制数值!!!
    • 他没有用第二个基数来指定进制的用法。

    下面是具体的例子:

    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数据类型有所帮助。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。