js には、String 型、Null 型、Number 型、Boolean 型、Object 型の 6 つの一般的なデータ型があります。
1. typeofに関する注意事項
データ型に関して言えば、演算子 typeof について言及することは避けられません。注意事項:
1. typeof はメソッドではなく演算子です。ただし、オブジェクトのデータ型を取得するには typeof() を使用することがよくあります。
2. null の typeof は object (null は空のオブジェクト参照であるため)、function の typeof は function です。
次のようにコードをコピーします。
alert(typeof null); // オブジェクトを返す
関数デモ(){
アラート('デモ');
}
alert(デモの種類); //関数を返す
2. 各種データ型のオブジェクト変数の初期値を設定する
Object 型のオブジェクト変数が最初に何を割り当てるべきかわからない場合は、var Demon={} を使用せず、null に設定するのが最善であることに注意してください。
次のようにコードをコピーします。
var d2=null;
d2={'キー':"クソ"};
var d3='';//文字列のデフォルト
var d4=0; //数値型の初期値は0に設定されます
var d5=null //オブジェクトタイプの初期デフォルト値を設定します。
3. unfineedとnullの違いと注意点
1. 「==」を使用して比較する場合、値を比較するため、それらは等しいです。
2. それらを区別するには 2 つの方法があります (それらの中心となるのはデータ型を比較することです)
1) typeof を使用して区別します。
2) 一致する「===」を使用します。比較は値とデータ型の間で行われ、それらがすべて同じである場合にのみ true が返されます。
次のようにコードをコピーします。
アラート(未定義 == null); //true
アラート(未定義のタイプ == null のタイプ); //false
アラート(未定義 === null); //true
4. ブール値に関する注意事項
1. true と 1 の比較、および false と 0 の比較も同じです (これは「== 比較」です)。これは、データ型変換が内部で実装されており、true を 1 に変換し、false を変換するためです。 js 内には大量のデータがあります。型の自動変換は誰もが注意を払う必要があることです。さらに多くのことについては後で説明します。 ただし、データ型が等しくないため、「===」を使用することは等しくありません。
2. Boolean への変換を表示します。変換を表示するには、Boolean() メソッドを使用します。注意する必要があるのは、いつ true に変換されるか、いつ false に変換されるかです。
1) 文字列型。空文字列でない限り、true に変換されます。
2) 数値型、0以外であれば負の数値でもtrueに変換されます。
3) オブジェクト型は、null型でない限りtrueに変換されます。
4) 未定義型は false に変換されます。
デモンストレーションはしませんので、ご自身で試してみてください。
3. (***) ブール関数は if() ステートメントの () 内で呼び出されます。
5. Number型の注意点
1. float型では精密な演算ができません。
次のようにコードをコピーします。
alert(0.1+0.2);//リターン 0.3000000000000000004
2.科学的表記法操作のサポート
3. NaN (非数)
1) var d=0/0; 注: js ではエラーは報告されませんが、NaN が返されます。
2) Number.NaN を通じて取得できます。
3) NaN と任意のオブジェクト間の操作はすべて NaN を返します。
4) isNaN() は NaN かどうかを判断します
次のようにコードをコピーします。
alert(isNaN(NaN));//true
アラート(isNaN(12));//false
alert(isNaN('123'));//false:文字列型数値は自動で数値に変換できるため
alert(isNaN('lew'));//true
alert(isNaN(false));//(*)false: bool値は数値に変換できるため、trueは1、falseは0になります。
5) isNaN() の内部実行原理: オブジェクトにも同じことが当てはまります。実装原理: 首相はオブジェクトの valueOf() メソッドを呼び出し、数値に変換できれば直接判定し、数値に変換できない場合は再度 toString() メソッドを呼び出します。そして戻り値をテストします。
valueOf() は内部で toObject() メソッドを呼び出します。2 つのメソッドの内部実行原理は次のとおりです。
次のようにコードをコピーします。
変数ボックス={
//ボックスオブジェクトのtoString()メソッドをオーバーライドします。
toString:function(){
'123' を返します。
}
};
alert(isNaN(box));//false
alert(box);//123 内部的には、alert() も最初にオブジェクトの valueOf() を呼び出し、次に toString() メソッドを呼び出します。
6) 他のデータ型を数値型に変換する
3 つの関数が含まれています: Number(): すべてのデータ型を変換できます。parseInt() と parseFloat() は文字列のみを変換します。
次のようにコードをコピーします。
アラート(数値('123'));//123
アラート(番号('0234'));//234
alert(数値(true));//1
アラート(数値(null));//(**)0
//上記を除き、その他はすべて NaN を返します。
alert(数値(未定義))//NaN
Number() の内部実装原則: isNaN() と同様に、valueOf() が最初に呼び出され、次に toString() が呼び出されます。 。したがって、パフォーマンスは比較的悪いと想像できます。 。したがって、変換されるオブジェクトが文字列である限り、内部で型を判断する必要がないため、parseInt() または parseFloat() を呼び出します。
parseInt() および parseFloat() を呼び出すときの注意事項: 文字列の最初の数字から最初の数字の前の数字までの部分が数字に変換されます。
次のようにコードをコピーします。
alert(parseInt('123leb'));//123
alert(parseInt('123leb345'));//123
alert(parseInt('len234'));//NaN
parseInt()のパラメータがfloat型の場合、数値の整数部分のみが取得されます。
次のようにコードをコピーします。
alert(parseInt(56.12));//56
6.文字列型
1) (*重要*) ECMAScript では文字列は不変です。文字列は作成後に変更されません。
値が割り当てられている文字列変数を変更するには、まず変数内の文字列を破棄し、次に新しい値を含む文字列を変数に入力します。
次のようにコードをコピーします。
var d='こんにちは';
d=d+' shit';//実行プロセス: まず 'hello' に値を代入し、次に d の文字列をクリアし、文字列 'hello' と 'shit' を連結してから、d 変数に値を代入します。 (そのため、文字列の値は作成後に変更されません)
2) toString() メソッドは、他のデータ型を String 型に変換します。ただし、null または未定義を操作すると、エラーが報告されます。
3) ただし、String() メソッドも toString() の効果を実現できますが、null および unknown に対して動作する可能性があります。
内部原則: 最初に toString() を呼び出し、文字列に変換できれば結果が直接返されます。いいえ、null か未定義かを判断し、「null」または「未定義」を返します。
概要: 変数を null または未定義にすることができないことがわかっている場合は、String() よりもパフォーマンスの高い toString() を使用してください。 String() は内部で判断する必要があるため、パフォーマンスが低下します。