JavaScript 入門 | 関数 | 定義済みグローバル関数
定義済み関数 (predefined functions)
JavaScript はユーザーの利便性のために、さまざまな機能を持つ複数のグローバル関数をあらかじめ定義して提供している。
これらのグローバル関数は、JavaScript のどの型のオブジェクトからでも直接使用できる。
JavaScript であらかじめ定義されているグローバル関数は次のとおりである。
- eval()
- isFinite()
- isNaN()
- parseFloat()
- parseInt()
- decodeURI()
- decodeURIComponent()
- encodeURI()
- encodeURIComponent()
- escape()
- unescape()
- Number()
- String()
eval()
eval() 関数は、文字列で表された JavaScript コードを実行する関数である。
構文
eval("文字列");
var x = 10, y = 20;
var a = eval("x + y"); // 30
var b = eval("y * 3"); // 60
document.write(a + "<br>" + b);
isFinite()
isFinite() 関数は、渡された値が有限な数であるかを検査し、その結果を返す。 引数として渡された値が数値でない場合は、数値へ変換して検査する。
構文
isFinite(検査する値);
isFinite(123); // true
isFinite(123e100); // true
isFinite(0); // true
isFinite(true); // true
isFinite(false); // true
isFinite(null); // true
isFinite("123"); // true
isFinite(""); // true
isFinite("文字列"); // false
isFinite(undefined); // false
isFinite(NaN); // false
isNaN()
isNaN() 関数は、渡された値が NaN であるかを検査し、その結果を返す。
引数として渡された値が数値でない場合は、数値へ強制変換して検査する。
渡された値が数値かどうかを確認するために、typeof 演算子を代わりに使用することもできる。
構文
isNaN(検査する値);
isNaN(123); // false
isNaN(123e100); // false
isNaN(0); // false
isNaN(true); // false
isNaN(false); // false
isNaN(null); // false
isNaN("123"); // false
isNaN(""); // false
isNaN("文字列"); // true
isNaN(undefined); // true
isNaN(NaN); // true
この関数は数値への強制変換によって予期しない結果を得ることがあるため、ECMAScript 6 からは Number.isNaN() メソッドの使用が推奨されている。
parseFloat()
parseFloat() 関数は、文字列を解析して浮動小数点数 (floating point number) として返す。
構文
parseFloat("文字列");
parseFloat("123"); // 123
parseFloat("123.000"); // 123
parseFloat("123.456"); // 123.456
parseFloat("12 34 56"); // 12
parseFloat(" 123 "); // 123
parseFloat("123 chocolate"); // 123
parseFloat("chocolate 123"); // NaN
parseInt()
parseInt() 関数は、文字列を解析して整数として返す。
構文
parseInt("文字列");
parseInt("123"); // 123
parseInt("123.000"); // 123
parseInt("123.456"); // 123
parseInt("12 34 56"); // 12
parseInt(" 123 "); // 123
parseInt("123 chocolate"); // 123
parseInt("chocolate 123"); // NaN
parseInt("10", 10); // 10
parseInt("10", 8); // 8
parseInt("10", 16); // 16
parseInt("0x10"); // 16
上の例のように、parseInt() 関数に 2 番目の引数として特定の基数を渡すと、その基数に合う整数として返す。
また、受け取った文字列の始まりが “0x” で始まる場合、parseInt() 関数はその文字列を 16 進数として認識する。
これまで parseInt() 関数は、受け取った文字列の始まりが “0” で始まると、その文字列を 8 進数として認識していた。
しかし JavaScript は現在、この構文をサポートしていない。
encodeURI() と encodeURIComponent()
encodeURI() 関数は、URI でアドレスを表す特殊文字を除き、すべての文字をエスケープシーケンス (escape sequences) として符号化する。
しかし encodeURIComponent() 関数は、URI のうち encodeURI() 関数が符号化しないすべての文字まで含めてエスケープシーケンス処理する。
構文
encodeURI(符号化するURI);
encodeURIComponent(符号化するURI);
var uri = "http://google.com/search.php?name=山田太郎&city=東京";
var enc1 = encodeURI(uri);
var enc2 = encodeURIComponent(uri);
document.write(enc1 + "<br>" + enc2);
decodeURI() と decodeURIComponent()
decodeURI() 関数は、encodeURI() 関数や他の方法で作られた URI (Uniform Resource Identifier) を復号する。 decodeURIComponent() 関数は、encodeURIComponent() 関数や他の方法で作られた URI コンポーネントを復号する。
構文
decodeURI(復号するURI);
decodeURIComponent(復号するURI);
var uri = "http://google.com/search.php?name=山田太郎&city=東京";
var enc1 = encodeURI(uri);
var enc2 = encodeURIComponent(uri);
document.write(enc1 + "<br>" + enc2 + "<br><br>");
var dec1 = decodeURI(enc1);
var dec2 = decodeURIComponent(enc2);
document.write(dec1 + "<br>" + dec2);
escape() と unescape()
escape() 関数は、渡された文字列内の特定文字を 16 進エスケープシーケンス文字へ変換する。
unescape() 関数は、渡された文字列内で escape() 関数や他の方法によって作られた 16 進エスケープシーケンス文字を元の文字へ変換する。
構文
escape("変換する文字列");
unescape("元に戻す文字列");
var str = "Hello! World ?#$";
var esc = escape(str);
var une = unescape(esc);
document.write(esc + "<br>" + une);
escape() 関数は JavaScript 1.5 以降サポートされていないため、encodeURI() 関数や encodeURIComponent() 関数を代わりに使用する必要がある。
unescape() 関数は JavaScript 1.5 以降サポートされていないため、decodeURI() 関数や decodeURIComponent() 関数を代わりに使用する必要がある。
Number()
Number() 関数は、渡されたオブジェクトの値を数値として返す。
構文
Number(オブジェクト);
Number("123"); // 123
Number("123.000"); // 123
Number("123.456"); // 123.456
Number("12 34 56"); // NaN
Number("123 chocolate"); // NaN
Number(true); // 1
Number(false); // 0
Number(new Date()); // 現在の日付に該当する数値を返す。
Number(null); // 0
String()
String() 関数は、渡されたオブジェクトの値を文字列として返す。
構文
String(オブジェクト);
String(123); // 123
String(123.456); // 123.456
String("123"); // 123
String(new Date()); // 現在の日付に該当する文字列を返す。
String(null); // null
String(true); // true
String(false); // false