JavaScript 変数は緩やかに型付けされており、JavaScript でサポートされているあらゆるデータ型を格納でき、その変数の型は実行時に動的に変更できます。例を参照してください:
var n = 10;
n = "hello CSSer!";
n = {};
上記の例では、変数 nが最初に宣言され、その値が 10 (整数型) に初期化され、次に文字列「hello CSSer!」が n に割り当てられ、次にそれにオブジェクトが割り当てられます。最後に、n の型がオブジェクト型になります。変数 n の型は動的であることがわかります。実際のプログラミングでは、デバッグには良くないため、変数の型を頻繁に変更しないことをお勧めします。
JavaScriptのデータ型
JavaScriptには5つの異なるデータ型があります:
string
number
boolean
object
function
3つのオブジェクトタイプ:
Object
日付
配列
値を含まない 2 つのデータ型:
null
未定義
typeof 演算子
typeof 演算子を使用して、JavaScript 変数のデータ型を確認できます。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof "tom" + "<br>" + typeof 3.14 + "<br>" + typeof NaN + "<br>" + typeof false + "<br>" + typeof [1,2,3,4] + "<br>" + typeof {name:'john', age:34} + "<br>" + typeof new Date() + "<br>" + typeof function () {} + "<br>" + typeof myCar + "<br>" + typeof null; </script> </body> </html>
ご注意ください:
NaN のデータ型は数値です
配列 (Array) のデータ型はオブジェクトです
日付 (Date) のデータ型はオブジェクトです
null データ型はオブジェクトです
未定義変数 データ型は未定義です
constructor プロパティ
constructor プロパティは、すべての JavaScript 変数のコンストラクターを返します。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "john".constructor + "<br>" + (3.14).constructor + "<br>" + false.constructor + "<br>" + [1,2,3,4].constructor + "<br>" + {name:'john', age:34}.constructor + "<br>" + new Date().constructor + "<br>" + function () {}.constructor; </script> </body> </html>
明示的な変換
手動で型変換を実行することにより、JavaScript は次の変換関数を提供します:
数値型への変換: Number(mix)、parseInt(string,radix)、parseFloat( string )
文字列型に変換: toString(radix)、String(mix)
ブール型に変換: Boolean(mix)
1. Number(mix)関数は、任意のタイプのパラメータミックスを数値タイプに変換できます
ルールは次のとおりです:
ブール値の場合、trueとfalseはそれぞれ1と0に変換されます
が数値の場合は、それ自体を返します。
nullの場合は0を返します。
未定義の場合はNaNを返します。
それが文字列の場合は、次の規則に従います:
1) 文字列に数字のみが含まれている場合は、それを 10 進数に変換します (先頭の 0 を無視します)
2) 文字列に有効な浮動小数点形式が含まれている場合は、変換します浮動小数点値に変換します(先頭の0は無視されます)
3) 空文字列の場合は0に変換します
4) 文字列に上記以外の形式が含まれる場合はNaNに変換します
が object である場合、オブジェクトの valueOf() メソッドを呼び出し、戻り値を前述の規則に従って変換します。変換の結果が NaN の場合は、オブジェクトの toString() メソッドを呼び出し、返された文字列値を前のルールに従って再度変換します。
Number("3.14") // 3.14を返します
Number(" ") // 0を返します
Number("") // 0
Number("99 88") を返します // NaN
を返します
2. parseInt(string, radix) 関数は、文字列を整数型の値に変換します。また、特定のルールもあります:
空でない最初の文字が見つかるまで、文字列の前のスペースを無視します
最初の文字が数字記号または負符号でない場合は、NaNを返します
If最初の文字が数値の場合は、文字列の解析が完了するか、数値以外の記号が見つかるまで解析を続けます
前の解析の結果が 0 で始まる場合、0x で始まる場合は 8 進数として解析されます。 , 16進数として解析されます
radixパラメータを指定した場合は、radix
3に基づいて解析されます
3. parseFloat(string)関数は、文字列を浮動小数点型の値に変換します
ルール 基本的に parseInt と同じですが、いくつかの違いがあります。文字列内の最初の小数点記号が有効で、parseFloat は先頭の 0 をすべて無視します。文字列に整数として解析できる数値が含まれている場合、整数値は次のようになります。浮動小数点数の代わりに返されます。
4. toString(radix) メソッド。 unknown と null を除くすべてのタイプの値には、オブジェクトの文字列表現を返す toString() メソッドがあります。結果の文字列はカンマで区切られ、連結されます。 ブール値 ブール値が true の場合、「true」を返します。それ以外の場合は、「false」を返します。
Date 日付のテキスト表現を返します。
Error 関連するエラー情報を含む文字列を返します。
Function 次の形式で文字列を返します。 functionname は、呼び出された toString メソッド関数の名前です。
function functionname() { [ネイティブ コード] }
Number 数値のテキスト表現を返します。
String String オブジェクトの値を返します。
デフォルトは「[object objectname]」を返します。objectname はオブジェクト タイプの名前です。
5. String(mix) 関数、任意のタイプの値を文字列に変換します。 ルールは次のとおりです。
toString() メソッドがある場合は、このメソッドを呼び出します (基数を渡さず)。パラメータ)を返し、結果を返しますnullの場合は「null」を返します未定義の場合は「未定義」を返します<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> var x = 55; document.getElementById("demo").innerHTML = String(x) + "<br>" + String(13.3) + "<br>" + String(100.99 + 23); </script> </body> </html>
6. ブール(混合)関数、任意の型の値を変換します。ブール値に変換します。
次の値は false に変換されます: false、""、0、NaN、null、未定義、およびその他の値は true に変換されます。例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var i="123abc"; i=parseInt(i);//字符串转整形 alert(i+","+typeof(i));//输出:123,number i="12.3abc"; i=parseFloat(i);//字符串转浮点型 alert(i+","+typeof(i));//输出:12.3,number(可见不管是int还是float都是number类型) i="a123abc"; i=parseInt(i);//字符串转整形 alert(i+","+typeof(i));//输出:NaN,number (由于转换失败,所以提示“不是一个数字,Not a Number”) var num=document.getElementById("num").value; function showMsg(num) { for(var i=0;i<num;i++) { document.write("你好,JavaScript!<br/>"); } } </script> </head> <body> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <button onclick="myFunction()">点击</button> <p id="demo"></p> <script> function myFunction() { var y = "5"; var x = + y; document.getElementById("demo").innerHTML = typeof y + "<br>" + typeof x; } </script> </body> </html>