eval【構文評価】
isFinite【有限数 判定】
isNaN【非数 判定】
parseFloat【文字列 → 浮動小数点数 変換】
parseInt【文字列 → 整数 変換】
eval【構文評価】
メモ
概要
- JavaScript 構文として評価し、 実行結果を返却 (evaluate:評価する)
- 悪意のあるコードの実行に注意
外部リンク
- ECMA-262 (英語)
eval (x) ES2024 (15) ES2023 (14) ES2022 (13)
構文
eval( x )
実行結果 (文字列以外は x そのまま)
xJavaScript 構文文字列
SyntaxError構文エラー (実装依存)
ReferenceErrorその他エラー (実装依存)
例
console.log(eval("1 + 2 + 3")); // 出力:6
var x = 1;
var y = 2;
var z = 3;
console.log(eval("x + y + z")); // 出力:6
isFinite【有限数 判定】
メモ
概要
- 有限数の判定
- 判定前に数値変換する為、isFinite(null)・isFinite("0") は true
- 厳密に判定する場合、Number.isFinite【有限数 判定】 :数値変換なし (違いの詳細あり)
外部リンク
- ECMA-262 (英語)
isFinite (number) ES2024 (15) ES2023 (14) ES2022 (13)
構文
isFinite( number )
判定結果 (詳細は下記参照)
true:有限数
false:その他
number判定値
number | 戻り値 | |
---|---|---|
NaN | false | |
+Infinity (+∞) | false | |
-Infinity (-∞) | false | |
数値 | true (有限数) | |
上記以外は、 数値変換 | undefined → NaN | false |
null → 0 | true (有限数) | |
(数値変換可) → 数値 | true (有限数) | |
(数値変換不可) → NaN | false |
例
console.log(isFinite(NaN)); // 出力:false
console.log(isFinite(+Infinity)); // 出力:false
console.log(isFinite(-Infinity)); // 出力:false
console.log(isFinite(123)); // 出力:true
console.log(isFinite(undefined)); // 出力:false
console.log(isFinite(null)); // 出力:true
console.log(isFinite("123")); // 出力:true
console.log(isFinite("abc")); // 出力:false
isNaN【非数 判定】
メモ
概要
- 非数の判定
- NaN == NaN と NaN === NaN はどちらも false の為、演算子での判定不可
但し、X !== X が true となるのは、X が NaN の場合のみ - グローバルのNaN と Number.NaN は同等
- NaN == NaN と NaN === NaN はどちらも false の為、演算子での判定不可
- 判定前に数値変換する為、isNaN(undefined)・isNaN("NaN") 等が true:厳密にするには下記の方法
- X !== X を判定:結果が true となるのは、X が NaN の場合のみ
- Number.isNaN【非数判定】 :数値変換なし (違いの詳細あり)
外部リンク
- ECMA-262 (英語)
isNaN (number) ES2024 (15) ES2023 (14) ES2022 (13)
構文
isNaN( number )
判定結果 (詳細は下記参照)
true:非数
false:その他
number判定値
number | 戻り値 | |
---|---|---|
NaN | true (非数) | |
数値 | false | |
上記以外は、 数値変換 | undefined → NaN | true (非数) |
null → 0 | false | |
(数値変換可) → 数値 | false | |
(数値変換不可) → NaN | true (非数) |
例
console.log(isNaN(NaN)); // 出力:true
console.log(isNaN(+Infinity)); // 出力:false
console.log(isNaN(-Infinity)); // 出力:false
console.log(isNaN(123)); // 出力:false
console.log(isNaN(undefined)); // 出力:true
console.log(isNaN(null)); // 出力:false
console.log(isNaN("123")); // 出力:false
console.log(isNaN("NaN")); // 出力:true
console.log(NaN == NaN); // 出力:false
console.log(NaN === NaN); // 出力:false
console.log(NaN !== NaN); // 出力:true
console.log(Number.isNaN(NaN)); // 出力:true
console.log(Number.isNaN(undefined)); // 出力:false
console.log(Number.isNaN("NaN")); // 出力:false
parseFloat【文字列 → 浮動小数点数 変換】
メモ
概要
- 数値文字列を浮動小数点数に変換
- 文字列 ⇔ 数値 については、Number【数値】オブジェクトのメモを参照
外部リンク
- ECMA-262 (英語)
parseFloat (string) ES2024 (15) ES2023 (14) ES2022 (13)
構文
parseFloat( string )
変換結果 (詳細処理は下記参照)
浮動小数点数 (Number型)
NaN:変換不可
string数値文字列
変換処理
(1) 文字列型でない場合、文字列型に変換
(2) 先頭ホワイトスペースは無視
(3) 無効文字があれば、直前の文字までを変換
(4) 変換できない場合、NaN
例
console.log(parseFloat("123.456")); // 出力:123.456
console.log(parseFloat("1234e-2")); // 出力:12.34
console.log(parseFloat(" 123")); // 出力:123
console.log(parseFloat("123x")); // 出力:123
console.log(parseFloat("abc")); // 出力:NaN
console.log(parseFloat(+Infinity)); // 出力:Infinity
console.log(parseFloat(-Infinity)); // 出力:-Infinity
console.log(parseFloat(undefined)); // 出力:NaN
console.log(parseFloat(null)); // 出力:NaN
parseInt【文字列 → 整数 変換】
メモ
概要
- 指定基数に従って、数値文字列を整数変換
- 文字列 ⇔ 数値 については、Number【数値】オブジェクトのメモを参照
外部リンク
- ECMA-262 (英語)
parseInt (string , radix) ES2024 (15) ES2023 (14) ES2022 (13)
構文
parseInt( string, radix )
変換結果 (詳細処理は下記参照)
整数 (Number型)
NaN:変換不可
string数値文字列
radix基数 (2~36:詳細は下記参照)
変換処理
(1) 文字列型でない場合、文字列型に変換
(2) 先頭ホワイトスペースは無視
(3) 無効文字があれば、直前の文字までを変換
(4) 変換できない場合、NaN
radix | 処理 |
---|---|
undefined または 0 | 自動判定 stringが "0x" または "0X" で始まっていれば 16進数 それ以外は 10進数 (実装によっては、8進数も対応) |
範囲外 | NaN |
数値型以外 | 数値型に変換 |
例
console.log(parseInt("10", 2)); // 出力:2
console.log(parseInt("10", 10)); // 出力:10
console.log(parseInt("10", 16)); // 出力:16
console.log(parseInt("Z", 36)); // 出力:35
console.log(parseInt(" 123", 10)); // 出力:123
console.log(parseInt("123x", 10)); // 出力:123
console.log(parseInt("abc", 10)); // 出力:NaN
console.log(parseInt(null, 10)); // 出力:NaN
console.log(parseInt(Infinity, 10)); // 出力:NaN
console.log(parseInt(undefined, 10)); // 出力:NaN
console.log(parseInt(999, 10)); // 出力:999
console.log(parseInt("10", 0)); // 出力:10
console.log(parseInt("0x10", 0)); // 出力:16
console.log(parseInt("123", 1)); // 出力:NaN
console.log(parseInt("123", 37)); // 出力:NaN
console.log(parseInt("123", "10")); // 出力:123