eval()【構文評価】
isFinite()【有限数 判定】
isNaN()【非数 判定】
parseFloat()【文字列 → 浮動小数点数 変換】
parseInt()【文字列 → 整数 変換】

eval()【構文評価】

メモ

  • JavaScript 構文として評価し、実行結果を返却 (evaluate:評価する)
    • 悪意のあるコードの実行に注意
  • 外部リンク (英語)
    eval (x)
    ES2016 (7) ES2015 (6) ES5.1

構文

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( number )

戻り値判定結果 (詳細は下記参照)
true:有限数
false:その他
number判定値
number戻り値
NaNfalse
+Infinity (+∞)false
-Infinity (-∞)false
数値true (有限数)
上記以外は、
数値変換
undefined → NaNfalse
null → 0true (有限数)
(数値変換可) → 数値true (有限数)
(数値変換不可) → NaNfalse

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 の場合のみ
    • グローバルのNaNNumber.NaN は同等
    • 判定前に数値変換する為、isNaN(undefined)・isNaN("NaN") 等が true:厳密にするには下記の方法
      • X !== X を判定:結果が true となるのは、X が NaN の場合のみ
      • Number.isNaN【非数判定】 :数値変換なし (違いの詳細あり)
  • 外部リンク (英語)
    isNaN (number)
    ES2016 (7) ES2015 (6) ES5.1

構文

isNaN( number )

戻り値判定結果 (詳細は下記参照)
number判定値
true:非数
false:その他
number戻り値
NaNtrue (非数)
数値false
上記以外は、
数値変換
undefined → NaNtrue (非数)
null → 0false
(数値変換可) → 数値false
(数値変換不可) → NaNtrue (非数)

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()【文字列 → 浮動小数点数 変換】

メモ

構文

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()【文字列 → 整数 変換】

メモ

構文

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