型変換は、暗黙的変換と明示的変換に分けられます。いわゆる暗黙的変換は実行時にプログラムによって実行される自動変換であり、明示的変換は人為的に型を強制的に変換することです。 Javascript 変数は緩やかに型付けされており、JavaScript でサポートされているあらゆるデータ型を格納でき、その変数の型は実行時に動的に変更できます。説明書をご覧ください
例:
var n = 10; n = "hello CSSer!"; n = {};
上記の例では、まず n 変数を宣言してその値を 10 (整数型) に初期化し、次に文字列「hello CSSer!」を n に割り当て、次にオブジェクトを割り当てます。最後に n の型は次のようになります。オブジェクトタイプ。変数 n の型は動的であることがわかります。実際のプログラミングでは、デバッグには良くないため、変数の型を頻繁に変更しないことをお勧めします。
JavaScript の変数の型は動的であるため、プログラムの実際の実行中に型変換の概念を使用する必要があります。型変換は、暗黙的変換と明示的変換に分けられます。いわゆる暗黙的変換は実行時にプログラムによって実行される自動変換であり、明示的変換は人為的に型を強制的に変換することです。この記事ではJavaScriptの型変換についてまとめます。
明示的な変換
手動で型変換を実行することにより、JavaScript は次の変換関数を提供します。
数値型に変換: Number(mix)、parseInt(string,radix)、parseFloat(string)
文字列型に変換: toString(radix), String(mix)
ブール型に変換: Boolean(mix)
1. Number(mix)関数は、任意のタイプのパラメータミックスを数値タイプに変換できます。ルールは次のとおりです:
1. ブール値の場合、true と false はそれぞれ 1 と 0 に変換されます
2. 数値の場合はそれ自体を返します。
3. null の場合は 0 を返します。
4. 未定義の場合は NaN を返します。
5. 文字列の場合は、次の規則に従います。
6.
1. 文字列に数字のみが含まれている場合は、10 進数に変換します (先頭の 0 を無視します)
2. 文字列に有効な浮動小数点形式が含まれている場合は、浮動小数点値に変換します (先頭の 0 を無視します)
3. 空の文字列の場合は、0 に変換します
4. 文字列に上記以外の形式が含まれている場合は、NaN に変換します
7. オブジェクトの場合は、オブジェクトの valueOf() メソッドを呼び出し、戻り値を前述の規則に従って変換します。変換の結果が NaN の場合は、オブジェクトの toString() メソッドを呼び出し、返された文字列値を前のルールに従って再度変換します。
次の表は、オブジェクトの valueOf() の戻り値を示しています。
下面提供几个例子,你能写出它的正确结果吗:
Number("hello CSSer!");//NaN Number("0x8");//8 Number("");//0 Number("020dd");//NaN Number("070");//70 Number(true);//1
2、parseInt(string, radix)函数,将字符串转换为整数类型的数值。它也有一定的规则:
1.忽略字符串前面的空格,直至找到第一个非空字符
2.如果第一个字符不是数字符号或者负号,返回NaN
3.如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止
4.如果上步解析的结果以0开头,则将其当作八进制来解析;如果以0x开头,则将其当作十六进制来解析
对象 | 操作 |
Array | 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。 |
Boolean | 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。 |
Date | 返回日期的文字表示法。 |
Error | 返回一个包含相关错误信息的字符串。 |
Function | 返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称:
function functionname( ) { [native code] } |
Number | 返回数字的文字表示。 |
String | 返回 String 对象的值。 |
默认 | 返回 “[object objectname]”,其中 objectname 是对象类型的名称。 |
5.如果指定radix参数,则以radix为基数进行解析
小测验:
parseInt("hello CSSer!");//NaN parseInt("0x8");//8 parseInt("");//NaN parseInt("020dd");//20 parseInt("070");//70 parseInt("22.5");//22
3. parseFloat(string) 関数は、文字列を浮動小数点型の値に変換します。
そのルールは基本的に parseInt と同じですが、いくつかの違いがあります。文字列内の最初の小数点記号は有効であり、文字列に整数として解析できる数値が含まれている場合、parseFloat は先頭の 0 をすべて無視します。の場合、浮動小数点値ではなく整数値が返されます。
4. toString(radix) メソッド。未定義と null を除くすべてのタイプの値には、オブジェクトの文字列表現を返す toString() メソッドがあります。
5. String(mix) 関数は、任意のタイプの値を文字列に変換します。
1. toString() メソッドがある場合は、(基数パラメータを渡さずに) このメソッドを呼び出し、結果を返します
2. null の場合は、「null」を返します
3. 未定義の場合は、「未定義」を返します
6. ブール (ミックス) 関数。任意のタイプの値をブール値に変換します。
次の値は false に変換されます: false、""、0、NaN、null、未定義、およびその他の値は true に変換されます。
暗黙的な変換
場合によっては、明示的な変換を提供しなくても、JavaScript は自動的に型変換を実行します。主な状況は次のとおりです。
1. 数値以外の値であるかどうかを検出するために使用される関数: isNaN(mix)
isNaN() 関数は、テストの結果、Number() を使用してパラメーター値を変換しようとすることが判明しました。結果が「非数値」の場合は true を返し、それ以外の場合は false を返します。
2. インクリメント演算子およびデクリメント演算子 (前置および後置を含む)、単項の正および負の符号演算子
これらの演算子は、あらゆるデータ型の値に適用できます。値の種類が異なる場合、演算子は次の規則に従います (比較後、その規則は基本的に Number() 規則と同じであることがわかります)。 🎜>
の場合
未定義と null の場合は、それぞれ String() を呼び出して明示的に文字列に変換します。
2. 演算値が null の場合、null を返します
3. 演算値が NaN の場合、NaN を返します
4. 演算値が未定義の場合は、未定義を返します
論理 OR (||) 演算子。演算値がブール値でない場合は、次の規則に従います。
1. Boolean() で変換された最初の演算値が false の場合は 2 番目の演算値が返され、それ以外の場合は最初の演算値 (Boolean() で変換された値ではない) が返されます。
ルール実行の比較
5. 演算値がブール値の場合は数値に変換して比較します
注: NaN は、それ自体を含め、どのタイプの値とも等しくありません。同時に、どのタイプの値と比較しても false を返します。
7. 等価演算子 (==)
等価演算子は、比較の前に演算値に対して暗黙的な変換を実行します:
1. 演算値がブール値の場合、比較前に数値に変換します。
2. 一方の演算値が文字列で、もう一方の演算値が数値の場合、Number() 関数を使用して文字列を数値に変換します。
3. 一方の操作値がオブジェクトで、もう一方がオブジェクトではない場合、オブジェクトの valueOf() メソッドが呼び出され、前のルールに従って結果が比較されます。
4.null と未定義は等しい
5. 演算値が NaN の場合、等価比較は false を返します
6. 両方の操作値がオブジェクトである場合、それらが同じオブジェクトを指しているかどうかを比較します