『壹』 js数字类型之NaN及isNaN
什么是NaN:
NaN 就是在发生类型强制转换的时候会产生 NaN ,也就是把其他类型转换成 Number 类型时,不能转换而返回的结果。
几种转换为 Number 类型的方法及可能出现NaN情况:
第一种转换函数:parseInt / parseFloat
console.log(parseInt(" 我是谁 ")); console.log((" 我是谁 "));
以上两种转换函数的结果就会返回 NaN 因为转换的不是一个有效数字啊。
第二种强制转换类型: Number()
console.log(Number("12px")); 返回 NaN 因为不是一个有效数字,后面有文字
第三种变量弱类型转换:
var str = '012.345 '; var x = str - 0; console.log(x, typeof x); // 这就是正常的了
那在JS中不管是什么都会有个类型,那 NaN 是个啥类型呢?
这里可以看到,NaN 的类型是 Number,那既然是 Number 类型,那我用它来比较是不是 数字类型 可不可以勒,那咱们就来看一下。
那这里怎么返回的都是 false 呢? 并且自己连自己都不等于,NaN的英文翻译是:Not a number (不是一个数字的缩写),那居然你不是一个数字 比喻是A,我也不是一个数字 比喻是B,那么 A == B 嘛?你会发现并不相等 返回 false。
那我想判断一个 变量是不是数字类型,不能使用NaN方法,那就有了 isNaN 的出现,请看下方用法:
isNaN 返回值是 如果你是有效数字,就是返回false,这里为啥是false 请看上面 NaN 英文的翻译 ,如果你返回的不是一个有效数字就是 true。
原理相当于是:
这里你会发现,判断的时候通过Number进行了一波隐式转换,才得到最终结果 false。
说到在项目中真实的用处,目前还没有遇到,但是如果你了解这个方法,遇到相关处理数据需要判断时,你就会想到它啦,以上就是本人对 NaN 及 isNaN 的相关介绍, 还有那句话:如有不对之处及不周之处请大佬们指出,也希望对一些人有所帮助,咱们下次再会!
『贰』 在javascrpit中!isNaN表示是什么意思 !很急在线等!
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
一些示例如下:
代码如下:
parseInt(\"1234blue\"); //returns 1234 parseInt(\"0xA\"); //returns 10 parseInt(\"22.5\"); //returns 22 parseInt(\"blue\"); //returns NaN
parseInt()方法还有基模式,可以把二进制、八进制
『叁』 js怎么判断字符串是否为全数字
js验证是否为数字,最简单的方法:
1.isNaN函数的使用:
function checknum() {
if (isNaN(frm.num.value)) {
alert("请输入数字");
frm.num.focus();
return false;
}
}
2.最完整最精确的方法:
"^\d+$"//非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数
"^((-\d+(" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(" //浮点数
『肆』 JS isNaN 问题
在javascript中,没有对象、直接调用的函数,都是全局函数。说是全局,其实只不过是从属于内置对象window的属性或方法而已。也就是说,isNaN()等价于window.isNaN()。其它方法属性也是类似,比如:
//不属于任何对象的i
vari=5;
functiontest(){
alert(i);
}
test();//5
alert(i);//5
alert(window.i);//5
以上几种alert出来的i都是5,说明window.i其实就是声明的那个i。
isNaN是window对象的一个方法,它的作用是判断参数是不是一个NaN。其实也就是看参数能不能转化为数字,如果能,就返回false;不能转化为数字,则返回true。例如:
isNaN('134');//false,字符串134可以转化为数字
isNaN('1a34');//true,字符串1a34不能转化为数字
isNaN('0x34');//false,字符串0x34能转化为数字,十六进制
isNaN(true);//false,布尔型变量能转化为数字,值为1
有一点要注意,在上面已经提到,布尔型值是能够转换成数字的,比如:
alert(true+1);//结果为2,因为true会转化为数字1,而false会转化为数字0
但是,如果用下面的代码,就会得到NaN:
alert(parseInt(true));//NaN
parseInt和isNaN类似,都是window的一个方法,其作用是将参数强制转化为整数,类似的还有window的另一个方法parseFloat,将参数强制转化为浮点数。显然这里parseInt(true)得到了一个NaN,但isNaN(true)得到的却是false。
这两者之间的差别,太具体的我就不清楚了。
『伍』 想知道js中的判断是否是数字的函数
javaScript判断一个字符串中是否包括有数字和"-",在一些表单提交的地方,这是比较有用的常规判断,这里收集有几种不同的方法,包括普通的JS验证法、正则表达式法,另外还有判断是否为浮点数的js函数,在最后还将简要介绍下isNAN函数的使用方法和例子:
正则表达式方法判断是否为数字,包括判断正整数:
function checkRate(input)
{
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字,//若判断正整数,则后边是:/^[1-9]+[0-9]*]*$/
if (!re.test(input.rate.value))
{
alert("请输入数字(例:0.02)");
input.rate.focus();
return false;
}
}
普通的JS函数方式:
function BASEisNotNum(theNum)
{
if (BASEtrim(theNum)=="")
return true;
for(var i=0;i<theNum.length;i++){
oneNum=theNum.substring(i,i+1);
if (oneNum<"0" || oneNum>"9")
return true;
}
return false;
11 }
判断是否是正数,也就是正整数:
function BASEisNotInt(theInt)
{
theInt=BASEtrim(theInt);
if ((theInt.length>1 && theInt.substring(0,1)=="0") || BASEisNotNum(theInt)){
return true;
}
return false;
}
判断字符串是是否是数字和其它符号组成,比如“-”:
function ismonth(str)
{
for(ilen=0;ilen<str.length;ilen++)
{
if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
{
if((str.charAt(ilen)!='-'))
return false;
}
}
11 return true;
}
判断是否为浮点数:
view sourceprint?
function BASEisNotFloat(theFloat)
{
len=theFloat.length;
dotNum=0;
if (len==0)
return true;
for(var i=0;i<len;i++){
oneNum=theFloat.substring(i,i+1);
if (oneNum==".")
dotNum++;
11 if ( ((oneNum<"0" || oneNum>"9") && oneNum!=".") || dotNum>1)
return true;
}
if (len>1 && theFloat.substring(0,1)=="0"){
if (theFloat.substring(1,2)!=".")
return true;
}
return false;
关于javascript的isNaN 函数:用法规则:isNaN(expression:Object) : Boolean。计算参数,如果值为 NaN(非数字),则返回 true。此函数可用于检查一个数学表达式是否成功地计算为一个数字。
可用性:Flash Player 5;ActionScript 1.0;参数expression:Object - 要计算的布尔值、变量或其它表达式。返回Boolean -布尔值。在提交表单中经常是这样用的:
<script>
if(isNaN(document.login.imgcode.value)){
alert('验证码不是数字!')
document.login.imgcode.focus();
return false;
}
</script>
『陆』 js中为什么 isNaN 为 true
1、isNaN是Ecmascript提供的内置对象Global的一个函数,如下代码即可以检测
console.log(typeofisNaN)//打印function
2、function自然不是Number类型啦,严格来说,funcion属于对象类型,在其他语言中function是单独的一种数据类型,但是在js中Function类型是Object类型的派生类型。js中数据类型有如下:
字符串、数字、布尔、数组、对象(包括函数)、Null、Undefined
3、那么得出的结论如下
//自定义的函数
varmyfc=function(){}
//全局函数,isNaN为ecma内置对象global的函数
vargloabfc=isNaN;
//都是函数(函数的类型被ecma划分为对象类型)
console.log('myfc的数据类型为:'+typeofmyfc)
console.log('gloabfc的数据类型为:'+typeofgloabfc)
//1、js是一门弱语言类型,其中弱指的是弱数据类型,也就是说变量的类型一开始并不会确定,当为变量赋值时会自动判断后隐式转换它的所有类型类型并进行转换。那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型。
//2、其他类型转为布尔运算时,如果一个对象(函数也是对象)存在,那么则为true。如果不存在,会抛出异常,不是你想象中的false,哈哈!
//3、isNaN是存在一个函数,所以为true
functionturnBoolean(param){
if(param){
console.log(param+'的转换结果为:'+true)
}else{
console.log(param+'的转换结果为:'+false)
}
}
turnBoolean(myfc)
turnBoolean(gloabfc)
//其他数据类型转布尔值
turnBoolean(null)
turnBoolean(undefined)
turnBoolean(0)
turnBoolean('')
turnBoolean(1)
turnBoolean({})
其实总结就一句,因为isNaN函数(对象)存在,所以为true
『柒』 JS如何判断字段是否为数字值
1、isNaN()
使用js自带全局函数isNaN(), isNaN()返回一个Boolean值,如下 :
varc="hello";//字符串
isNaN(c);//返回一个false;
varc=10;//数字
inNaN(c);//返回一个true
如果以上c为一个空串或是一个空格,isNaN将把c当作数字0来处理,所以检查不严谨。
2、正则表达式
functioncheckNum(input){
varreg=/^[0-9]+.?[0-9]*$/;//判断字符串是否为数字,判断正整数用/^[1-9]+[0-9]*]*$/
varnum=document.getElementById(input).value;
if(!reg.test(num)){
alert("请输入数字");
document.getElementById(input).value="";
returnfalse;
}
}
3、利用typeof的返回值
验证方法:如果返回的值为Number,则为数字;如果返回值为String或其它,则不是数字。如下所示:
vara=123;
varb='123abc';
typeof(a)//Number
typeof(b)//String
『捌』 Js判断值是否是NaN
window.isNaN 只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。(不是数值会先调用 Number 方法转化为数值)
isNaN本意是通过Number方法把参数转换成数字类型,如若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。,如果要判断某个值是否严格等于NaN不能用这个方法
ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,首先判断 value 类型是不是 number;,如不是,直接返回false。2. 然后判断 value 是不是 NaN
推荐方法:
补充知识:
NaN 是 JavaScript 之中唯一不等于自身的值
Object.is() 是 ES6 用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。除了对 +0 和 -0 以及 NaN 的判断
『玖』 js中为什么 isNaN 为 true
isNaN() 函数用于检查其参数是否是非数字值。
比如
varx;
console.log(isNaN(x));
这个输出就是true,因为x 没有定义,是undefined,是“非数字值”
『拾』 在JavaScript中isNaN()方法如何使用
NaN = not a number 不是一个数,isNaN(加你要判断的值,可以是变量) 判断这个值是不是不是一个数并返回true 或者 false 比如
var temp = isNaN(123);
alert(temp);
那么提示的是false,稍有点儿绕,多用用就好了