0

我正在使用以下内容:

$scope.option.selectedSubject != null && !isNaN($scope.option.selectedSubject)

有人可以告诉我是否有另一种方法来检查变量是否是有效的定义数字?有什么方法可以只用一次检查就可以做到这一点,或者我怎样才能创建一个函数来做这个检查然后调用它?

4

3 回答 3

3

也许这个功能可以帮助你:

function isANumber(x) {
 return ((+x)===x);
}
于 2013-08-20T13:28:46.207 回答
1

知道这可能很有用:变量只能null在脚本中的某个位置被分配,默认情况下永远不会null

var foo; // undefined
foo = null;
// null could be returned by a function too, which is the most common use of null

正如zzzzBov在他的评论中所说,“isNaN将检查该值的数字表示是否为 NaN。这意味着isNaN('500')is false,而isNaN('foo')is true。”

要回答您的问题,请查看下表:

!isNaN(undefined); // false
!isNaN(null); // true
!isNaN(); // false
!isNaN(''); // true <= Watch out for this one !
!isNaN('test'); // false
!isNaN('10'); // true
!isNaN(10); // true

如果你想确保它是一个数字,你应该使用typeof,然后如果这是一个字符串,检查它是否有长度。将这一切包装在一个函数中会创建如下内容:

function isNumber (num) {
    // Return false if num is null or an empty string
    if (num === null || (typeof num === "string" && num.length === 0)) {
        return false;
    }

    return !isNaN(num);
}

isNumber(undefined); // false
isNumber(null); // false
isNumber(); // false
isNumber(''); // false
isNumber('test'); // false
isNumber('10'); // true
isNumber(10); // true
于 2013-08-20T13:31:43.720 回答
1

如果您只关心数字表示,这将起到作用。

!isNaN($scope.option.selectedSubject + "")

注意+ ""

于 2013-08-20T13:33:58.750 回答