我有以下功能:
isNumber: function (num) {
// Return false if num is null or an empty string
if (num === null || (typeof num === "string" && num.length === 0)) {
return false;
}
var rtn = !isNaN(num)
return rtn;
},
如果尚未定义num,这会给我一个问题。当num未定义时,如何让它返回false?
答案 0 :(得分:1)
与null
进行比较时,您可以使用“宽松”比较:
num == null
true
如果num
为undefined
或null
(且仅限于此),则为num == null || num === ''
。
您还可以简化字符串比较,以便整体测试:
{{1}}
答案 1 :(得分:0)
替换
if (num === null || (typeof num === "string" && num.length === 0))
与
if (num === null || typeof num === "undefined" || (typeof num === "string" && num.length === 0))
如您所见,新条件还会处理num
为undefined
的情况。
答案 2 :(得分:0)
您可以通过测试传递给函数的arguments
数组来检查是否没有值传递给函数;所以,如果arguments.length=0
,那么没有任何参数传递给函数,并且num
将不会被定义。
您还可以对num !== undefined && num !== null
进行进一步检查(请注意,使用非标识运算符!==
而不是非等号运算符!=
)。
相反,您可以检查一下,如果您解析数字,那么它是一个有效的非无限数字:
isNumber: function (num) {
if ( arguments.length == 0 )
{
return false;
}
return !isNaN(parseFloat(num))&&isFinite(num);
}
检查是否:
parseFloat(num)
评估为有效数字;如果isFinite(num)
- 该有效数字不是正数或负数无穷大。如果这符合您的条件,那么您不需要进行第一次检查(因为parseFloat(undefined)
返回NaN
)并且可以将功能简化为:
isNumber: function (num) {
return !isNaN(parseFloat(num))&&isFinite(num);
}
答案 3 :(得分:0)
请参阅此answer。
<script>
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
alert(isNumber()); //false
alert(isNumber(10)); //true
alert(isNumber(null)); //false
alert(isNumber(undefined)); //false
</script>