1. ホーム
  2. javascript

[解決済み] angular.isNumber()が期待通りに動作しないのはなぜですか?

2022-02-26 04:19:46

質問

AngularJSの angular.isNumber が機能しない。数字である文字列では動作しません。私のやり方が悪いのでしょうか?単に isNaN() ?

angular.isNumber('95.55') == false
angular.isNumber('95.55' * 1) == true
angular.isNumber('bla' * 1) == true
angular.isNumber(NaN) == true

文字列が数字であるかどうか(実際に数字である場合)を確認するものが必要であり angular.isNumber() は1を掛けない限りそれをさせてくれませんが、そうすれば常に真になります。また NaN は(定義上)数ではないので、falseを返すはずです。

どのように解決するのですか?

JavaScript , typeof NaN === 'number' .

を認識する必要がある場合 文字列 として 数値 にキャストし、それを に変換し、再び 文字列 で、これを入力と比較するといった具合です。

function stringIsNumber(s) {
    var x = +s; // made cast obvious for demonstration
    return x.toString() === s;
}

stringIsNumber('95.55'); // true
stringIsNumber('foo'); // false
// still have
stringIsNumber('NaN'); // true