我使用了以下内容:如何检查一个变量是否为空并且是一个数字?
$scope.option.selectedSubject != null && !isNaN($scope.option.selectedSubject)
谁能告诉我,如果有另一种方式来检查,如果一个变量是一个有效的定义的数字?有什么办法可以用一个检查来做到这一点,或者我如何创建一个函数来做这个检查然后调用它?
我使用了以下内容:如何检查一个变量是否为空并且是一个数字?
$scope.option.selectedSubject != null && !isNaN($scope.option.selectedSubject)
谁能告诉我,如果有另一种方式来检查,如果一个变量是一个有效的定义的数字?有什么办法可以用一个检查来做到这一点,或者我如何创建一个函数来做这个检查然后调用它?
这可能是需要了解的:一个变量只能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')
是false
,而isNaN('foo')
是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
也许这个功能可以帮助你:
function isANumber(x) {
return ((+x)===x);
}
这看起来很有趣。如果x为空或未定义,这仍然可以工作吗? – Alan2
+ undefined是NaN so + undefined!== undefined。 + null === 0 so + null!== null – GameAlchemist
@Alan'null'和'undefined'返回'false'。只是未定义的'var'会给出错误,但是再次,它是一个参考错误(var未定义),而不是脚本错误。 – RaphaelDDL
为什么?检查有什么问题?至于这个功能,谷歌会在这个实际的瞬间帮助你。 –
一个字符串,一个对象,一个函数都不是'NaN' – cgTag
@MathewFoscarini,'isNaN'将检查这个值的数字表示是否为'NaN'。这意味着'isNaN('500')'是'false',而'isNaN('foo')'是'true'。 – zzzzBov