『壹』 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,稍有點兒繞,多用用就好了