JavaScriptのデータ型とその変換の詳しい説明

不言
リリース: 2018-10-29 14:19:42
転載
1422 人が閲覧しました

この記事では、JavaScript のデータ型とその変換について詳しく説明します。必要な方は参考にしてください。

1. はじめに

JavaScript 言語のすべての値は、特定のデータ型に属します。 JavaScript には 7 つのデータ型があります:

  1. 数値: 整数と小数 (1 や 3.14 など)。

  2. 文字列 (文字列): テキスト (Hello World など)。

  3. ブール値: 信頼性を表す 2 つの特別な値、つまり true (真) と false (偽)。

  4. 未定義: 「未定義」または存在しないことを意味します。

  5. null: null 値、つまりここの値が空であることを示します。

  6. オブジェクト: さまざまな値のコレクション。

  7. Symbol

Symbol は、ES6 で新しく追加された基本データ型です。この記事では、最初の 6 つの型のみを紹介します。

2. データ型の詳細説明

1. 数値 (数値):

1.1 整数と浮動小数点数

JavaScript 内部。すべての数値は、整数も含めて 64 ビット浮動小数点数として保存されます。

1 === 1.0 // true
ログイン後にコピー

1.2 精度

国際標準 IEEE 754 では、JavaScript 浮動小数点数の 64 個の 2 進数が左端から始まり、最初のデジタル符号ビットによって数値の符号が決まります ( 0は正の数、1 は負の数)、2 ~ 12 桁の指数部が値のサイズを決定し、13 ~ 64 の小数部が値の精度を決定します。
1.3 数値の基数

JavaScript は、整数の 4 つの基本表現方法 (10 進数、16 進数、8 進数、および 2 進数) を提供します。

  • 10 進数: 先頭に 0 のない数値。

  • 8 進数: 接頭辞 0o または 0O が付いた値。

  • 16 進数: 接頭辞 0x または 0X が付いた値。

  • バイナリ: プレフィックス 0b または 0B が付いた値。

1.4 NaN

NaN は「数値ではない」を意味します。これは主に、文字列を数値に解析する際に次のようなエラーが発生した場合に発生します。

618 - 'x' // NaN
ログイン後にコピー
NaN不等于任何值,包括它本身。:
ログイン後にコピー
NaN === NaN // false
ログイン後にコピー
2 . 文字列:

は '' または "" で囲まれます。内容が含まれていない場合は、長さ 0 の空の文字列になります。スペースが含まれているものはスペース文字列と呼ばれ、長さは 1 であり、この 2 つは異なります。

2.1 複数行の文字列

文字列が複数行に分割されている場合は、各行の最後にバックスラッシュを使用できます。そうしないとエラーが報告されます。バックスラッシュを使用するだけでなく、連結演算子 ( ) を使用して複数の単一行文字列を連結することもできます。これら 2 つの方法の結果は一貫しています。連結演算子 ( ) を使用することをお勧めします。

var longString = 'Long \
long \
long \
string';

longString
// "Long long long string"
ログイン後にコピー
var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';

longString
// "Long long long string"
ログイン後にコピー

ES6 では、複数行の文字列を記述するためにバックティック (`) が追加され、この複数行の文字列の長さにはキャリッジ リターンの長さが含まれます。

2.2 エスケープ

バックスラッシュ () は文字列内で特別な意味を持ち、いくつかの特殊文字を表すために使用されるため、エスケープ文字とも呼ばれます。バックスラッシュでエスケープする必要がある特殊文字は、次のとおりです。

  • 0: null (u0000)

  • n: 改行文字 (u000A)

  • #r: Enter キー (u000D)

  • t: タブ文字 (u0009)

  • ' : シングルクォーテーション (u0027)

  • ": ダブルクォーテーション (u0022)

    \: バックスラッシュ (u005C)

2.3 長さ属性

長さ属性は文字列自体によって決定され、ブール値 (

var s = 'mamamoo';
s.length // 7
s.length = 5;
s.length // 7
ログイン後にコピー

3.ブール値):
##ブール値には「true」と「false」の 2 つの値しかありません。「true」はキーワード true で表され、「false」はキーワードで表されます。 JavaScript が期待するキーワード false の場合、その位置にある既存の値は、未定義、null、false、0、を除く 6 つの値に自動的に変換されます。 NaN、"" または '' (空の文字列) は false に変換され、その他の値は未定義および null とみなされます:

#4。

##null と unknown はどちらも「なし」を意味します。この 2 つの違いは次のとおりです。

##null は「空」を表すオブジェクトであり、変換すると 0 になります。数値に変換します。unknown は「ここに定義がありません」を表すプリミティブです。数値に変換すると、値は NaN になります。変数に値がない場合は、unknown が返されます。

オブジェクトはあるが値を割り当てたくない場合は、オブジェクト以外の値を割り当てたくない場合は null を使用することをお勧めします。値を指定する場合は、未定義
  • ##5 を使用することをお勧めします。 オブジェクト:
  • 5.1 生成方法
  • オブジェクトは次のとおりです。単に「キーと値のペア」のセットであり、順序付けされていない複合データのコレクションです。

    生成方法は、キーと値のペアを括弧で囲み、それを変数に割り当てることです。ペアは「:」の前にカンマ、「:」の後にキー値で区切られます。

    对象的所有键名都是字符串,要加引号,不加也会自动转为字符串。如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。而键值是什么类型就用该类型的格式。

    5.3 属性

    对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。

    属性的读取

    读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。

    var obj = {
      p: 'Hello World'
    };
    
    obj.p // "Hello World"
    obj['p'] // "Hello World",[]内''一定要加
    ログイン後にコピー

    属性的删除delete(无value无key)

    var obj = { p: 1 };
    Object.keys(obj) // ["p"]
    
    delete obj.p // true
    obj.p // undefined
    Object.keys(obj) // []
    ログイン後にコピー

    属性的查看Object.keys

    var obj = {
      key1: 1,
      key2: 2
    };
    
    Object.keys(obj);
    // ['key1', 'key2']
    ログイン後にコピー

    属性是否存在:in

    in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。

    属性的遍历:for...in 循环

    var obj = {a: 1, b: 2, c: 3};
    
    for (var i in obj) {
      console.log('键名:', i);
      console.log('键值:', obj[i]);
    }
    // 键名: a
    // 键值: 1
    // 键名: b
    // 键值: 2
    // 键名: c
    // 键值: 3
    ログイン後にコピー

    三、如何知道变量类型?

    使用type of可得变量的数据类型,如:

    var t = 619;
    type of t;//"number"
    ログイン後にコピー

    特别注意的是:

    • 当数据类型为null时,用type of打出的数据类型却是'object'。

    • 当定义了一个函数时,用type of打出的数据类型却是'function'。

    四、数据类型的转换

    4.1 转为string

    • 使用toString()

    var t = 619;
    t.toString();//"619"
    ログイン後にコピー

    null没有toString这个API,不能使用toString,会报错

    var n = null;
    n.toString;
    //Uncaught TypeError: Cannot read property 'toString' of null
    ログイン後にコピー

    undefined也会报错

    var n = undefined;
    n.toString();
    //Uncaught TypeError: Cannot read property 'toString' of undefined
    ログイン後にコピー

    object使用toString会得到"[object Object]"。

    var object = {name:"po"};
    object.toString()
    //"[object Object]"
    ログイン後にコピー
    • 通过与空字符串相加(+"")也能转化为字符串类型,且null、undefined也适用。

    • 使用window.String()

    window.String(null)//"null"
    ログイン後にコピー

    为什么1 + '1' = '11'?
    这是因为当两个不同数据类型相加时,会优先选择转化为字符串,所以1 + '1'相当于1.toString() + '1',于是结果为两个字符串1相加,即字符串11。

    4.2 转为布尔

    使用Boolean()

    Boolean(0)//false
    Boolean('')//false
    Boolean(' ')//true
    ログイン後にコピー

    使用!!

    !! ''//false
    !! ' '//true
    ログイン後にコピー

    五个falsy值:0、NaN、空字符串、null、undefined

    4.3 转为Number

    使用Number()

    Number('1')//1

    使用parseInt()

    //第二位参数要写,是表示进制

    使用parseFloat()

    parseFloat('1.23')//1.23

    使用 -0

    '1'-0//1

    使用 +

    + null//0

以上がJavaScriptのデータ型とその変換の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート