この記事では、JavaScript のデータ型とその変換について詳しく説明します。必要な方は参考にしてください。
1. はじめに
JavaScript 言語のすべての値は、特定のデータ型に属します。 JavaScript には 7 つのデータ型があります:
数値: 整数と小数 (1 や 3.14 など)。
文字列 (文字列): テキスト (Hello World など)。
ブール値: 信頼性を表す 2 つの特別な値、つまり true (真) と false (偽)。
未定義: 「未定義」または存在しないことを意味します。
null: null 値、つまりここの値が空であることを示します。
オブジェクト: さまざまな値のコレクション。
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
は '' または "" で囲まれます。内容が含まれていない場合は、長さ 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)
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 が返されます。
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 サイトの他の関連記事を参照してください。