精华内容
下载资源
问答
  • Javascript如何判断一个值是不是NaN

    千次阅读 2020-01-10 16:12:45
    问题由来:如何判断一个函数的返回值是不是NaNNaN==NaN; //false Number.isNaN(NaN); //treu Object.is(NaN,NaN); //true Object.is()方法用来判断两个值是否是相同的。 用法 Object.is(val1, val2); ...

    问题由来:如何判断一个函数的返回值是不是NaN?

    NaN==NaN;                //false
    Number.isNaN(NaN);       //treu
    Object.is(NaN,NaN);      //true      

    Object.is() 方法用来判断两个值是否是相同的值。

    用法

    Object.is(val1, val2);

    Object.is() 判断两个值是否相同。如果下列任何一项成立,则两个值相同:

    • 两个值都是 undefined
    • 两个值都是 null
    • 两个值都是 true 或者都是 false
    • 两个值是由相同个数的字符按照相同的顺序组成的字符串
    • 两个值指向同一个对象
    • 两个值都是数字并且
      • 都是正零 +0, 或者一个为+0,另一个为0
      • 都是负零 -0
      • 都是 NaN
      • 都是除零和 NaN 外的其它同一个数字

    这种相等性判断逻辑和传统的 == 运算不同,== 运算符会对它两边的操作数做隐式类型转换(如果它们类型不同),然后才进行相等性比较,(所以才会有类似 "" == false 等于 true 的现象),但 Object.is 不会做这种类型转换。

    这与 === 运算符的判定方式也不一样。=== 运算符(和== 运算符)将数字值 -0 和 +0 视为相等,并认为 Number.NaN不等于 NaN。

    例子

    Object.is('foo', 'foo');     // true
    Object.is(window, window);   // true
    
    Object.is('foo', 'bar');     // false
    Object.is([], []);           // false
    
    var foo = { a: 1 };
    var bar = { a: 1 };
    Object.is(foo, foo);         // true
    Object.is(foo, bar);         // false
    
    Object.is(null, null);       // true
    
    // 特例
    Object.is(0, -0);            // false
    Object.is(0, +0);            // true
    Object.is(-0, -0);           // true
    Object.is(+0,-0);            //false
    Object.is(NaN, 0/0);         // true
    Object.is(NaN, 1/0);         // false
    

    参考自MDN

    展开全文
  • 探讨什么是NaN、isNaN()及如何判断一个值NaNNaN NaN的全称是“Not a Number”,它是Number类型中的一个特殊。Number类型包括整数和浮点数。 此处引入另一个方法Number(x),它用于将x转换为Number类型,如果...

    探讨什么是NaN、isNaN()及如何判断一个值是NaN

    ①NaN

    NaN的全称是“Not a Number”,它是Number类型中的一个特殊值。Number类型包括整数和浮点数。

    此处引入另一个方法Number(x),它用于将x转换为Number类型,如果转换失败,就会返回NaN

    这里以“表达式的计算”、“类型转换”为例来进行讲解:
    {表达式的计算}

    100 - '2a' ; // NaN
    '100' / '20a'; // NaN
    '20a' * 5 ; // NaN
    undefined - 1; // NaN, Number(undefined) == NaN
    [] * 20 ; // 0, Number([]) == 0
    null - 5; // -5, Number(null) == 0
    

    特别的,加号(+)在计算时的特殊性:
    JS表达式的执行顺序是按照运算符的优先级从左到右依次进行的,如果加号 (+) 两边的变量都是 Number 类型时,才会做数字相加运算,如果其中有一个变量是字符串,则会将两边都作为字符串相加

    {类型转换}
    直接使用 parseInt,parseFloat 或 Number 将一个非数字的值转化为数字时,表达式返回 NaN

    'abc' - 3   // NaN,应用了Number()
    parseInt('abc')  // NaN
    parseFloat('abc') // NaN
    Number('abc')    // NaN
    

    对于 “数字+字符” 的值,其转换结果会有所不同:

    Number('123abc'); // NaN
    parseInt('123abc'); // 123
    parseInt('123abc45'); // 123
    parseFloat('123.45abc');// 123.45
    

    这是因为Number 转换的是整个值;parseInt 和 parseFloat 只转化第一个无效字符之前的字符串,转换的是部分值。 此外,一元加(+)操作符也可以实现与 Number 相同的作用。

    + '12abc'; // NaN
    + '123'; // 123
    + '123.78'; // 123.78
    + 'abc'; // NaN
    

    ②isNaN()

    isNaN() 是一个全局方法(即挂在window对象上的方法),它的作用是检查一个值是否能被 Number() 成功转换 。 如果能转换成功,就返回 false,否则返回 true

    isNaN(NaN)    // true 不能转换
    isNaN('123')   // false 能转换
    isNaN('abc')    // true 不能转换
    isNaN('123ab')   // true 不能转换
    isNaN('123.45abc') // true 不能转换
    

    ③扩展:如何判断某个值本身是否为NaN

    NaN具有一个重要特性,它不等于自身,即NaN==NaN的返回值为false。
    为判断一个值是否为NaN提供以下两种方法:
    {利用 NaN不等于自身这一特性来判断}

    function selfIsNaN(value){//自定义一个函数
      return value != value;
    }
    

    {利用Number.isNaN()进行判断}它和全局方法isNaN()不同

    Number.isNaN('123'); // false 本身不是NaN
    Number.isNaN('abc'); // false 本身不是NaN
    Number.isNaN(NaN); // true 本身是NaN
    

    参考文献:
    https://www.cnblogs.com/onepixel/p/5281796.html
    https://www.cnblogs.com/moqijianqi/p/11413441.html

    展开全文
  • function bouncer(arr) { // Don't show a false ID to this bouncer. var array = arr.filter(function(value){ if (value === false || value === null || value ===...bouncer([false, 0, NaN, undefined, ""]);
  • 我们如何判断一个值是否等于NaN呢?这篇文章好好聊聊NaN。 1.NaN是什么? NaN全称是Not-A-Number(不是一个数字),我们可以通过Number.NaN来获得一个NaN,在类型转换失败时,我们常常会得到一个NaN,需要注意的是.....

    在JavaScript的数字类型Number中,我们最常使用的大概是整数类型与浮点数类型,但除这两者外,还有个特殊的存在NaN,为什么NaN!==NaN?我们如何判断一个值是否等于NaN呢?这篇文章好好聊聊NaN。

    1.NaN是什么?

    NaN全称是Not-A-Number(不是一个数字),我们可以通过Number.NaN来获得一个NaN,在类型转换失败时,我们常常会得到一个NaN,需要注意的是,NaN是JS中唯一一个自身不相等的存在。

    Number.NaN //NaN
    NaN === NaN //false

    2.为什么NaN!==NaN?

    NaN只是Number上的一个静态属性。

    Number('echo') //NaN

    比如Number('echo')会得到NaN,它只是为了告诉你这个值不是一个数字,一种表示方法,而非一个精准有效的值,因此NaN不能参与计算,也无法与自身比较。

    3.什么情况下产生NaN

    当Number提供的类型转换方法在解析一个值却无法返回数字时:

    Number('echo') //NaN
    
    parseInt('echo123') //NaN
    parseInt('123echo') //123
    
    parseFloat('时间跳跃123.1') //NaN
    parseFloat('123.1时间跳跃') //123.1

    计算中使用-  /   *运算符,参与计算的值转换类型失败时:

    1 - '听风是风' //NaN
    1 * '123时间跳跃' //NaN
    1 / 'echo123' //NaN

    特别注意,两个数字0相除也会得到NaN:

    0 / 0 //NaN

    4.isNaN方法的含义,如何判断一个值严格等于NaN

    window上有一个全局方法isNaN(),可能大分部人习惯理解此方法为判断一个值是等于NaN,这是因为is NaN直译就是“是不是NaN”所带来的误解,其实本意不是这样:

    isNaN(123) //false
    isNaN('123时间跳跃') //true
    isNaN(NaN) //true

    当我们向isNaN传递一个参数,它的本意是通过Number()方法尝试转换参数的类型为Number,如果转换成功返回false,否则转返回true,它只是判断这个参数能否转成数字而已,并不是判断是否严格等于NaN

    所以当你要判断某个值是否严格等于NaN时无法使用isNaN()方法,毕竟你传递任意字符串它都会返回true。

    ES6中提供了一个Number.isNaN()方法用于判断一个值是否严格等于NaN:

    Number.isNaN(NaN)//true

    与isNaN最大的区别是,Number.isNaN不存在转换类型的行为,这点是最大的不同:

    isNaN(NaN) //true
    Number.isNaN(NaN) //true
    
    isNaN('听风是风') //true
    Number.isNaN('听风是风') //false

    我们在前面说过,NaN是唯一一个与自身不相等的特殊值,如果你觉得Number.isNaN存在兼容问题,也可以利用这个特点自己定义验证方法:

    const ISNAN = (value) => value !== value;
    ISNAN('听风是风'); //false
    ISNAN(123); //false
    ISNAN(NaN); //true

    参考资料:

    JavaScript中的 NaN 与 isNaN

    MDN--NaN

    MDN--isNaN

    转载于:https://www.cnblogs.com/echolun/p/10874505.html

    展开全文
  • NaN(不是一个数字且数据类型为number,另外NaN != NaN)是执行数学运算没有成功,返回失败的结果。但是这个结果仍然是数字类型。var a = "str"; var b = 2; var c = a/b;console.log(isNaN(a)); // true console.log...

    NaN(不是一个数字且数据类型为number,另外NaN != NaN)是执行数学运算没有成功,返回失败的结果。但是这个结果仍然是数字类型。

    var a = "str"; var b = 2; var c = a/b;

    console.log(isNaN(a)); // true console.log(isNaN(b)); // false console.log(isNaN(c)); // true

    这个例子中,a的结果是true,b是false,c是true。对于isNaN来说,它是判断一个值是不是NaN,如果是则返回true。但是a是一个字符串,用isNaN判断这个变量a的时候还是会返回true。所以判断一个变量是否为NaN不能使用isNaN()这个方法,可以用以下方法判断。

    1.根据NaN的定义判断。 var a = "str"; var b = 2; var c = a/b;

    function isNaN(n) { if(typeof(n) === "number" && isNaN(n)) { return true; } else { return false; } } console.log(Number.isNaN(a)); // false console.log(Number.isNaN(b)); // false console.log(Number.isNaN(c)); // true

    2.防止在老版本的浏览器不支持isNaN方法。 var a = "str"; var b = 2; var c = a/b;

    if(!Number.isNaN) { Number.isNaN = function(n) { return( typeof(n) === "number" && window.isNaN(n)); } } console.log(Number.isNaN(a)); // false console.log(Number.isNaN(b)); // false

    3.利用NaN是唯一一个不等于任何自身的特点。 var a = "str"; var b = 2; var c = a/b;

    function isNaN(n) { if(n !== n) { return true; } else { return false; } } console.log(isNaN(a)); // false console.log(isNaN(b)); // false console.log(isNaN(c)); // true

    4.利用ES6中提供的Object.is()方法。 var a = "str"; var b = 2; var c = a/b;

    console.log(Object.is(a, NaN)); // false console.log(Object.is(b, NaN)); // false console.log(Object.is(c, NaN)); // true

    展开全文
  • js判断值是否NAN

    2021-08-19 10:01:25
    //判断是否NAN function isNaN(n) { if(n !== n) { return true; } else { return false; } }
  • 首先我们要知道: NaN六亲不认,连自己都不认...采用global对象的isNaN():判断一个值是否NaN(补:global对象是全局对象,所以用的时候直接写方法名即可,它的方法还有encodeurI(),decodeurI(),eval()等) ...
  • js判断一个变量是否NaN

    千次阅读 2020-11-02 14:20:38
    NaN(不是一个数字,但数据类型为number)是执行数学运算没有成功,返回失败的结果。 另外,NaN 不等于 NaN判断方法 利用 NaN 是唯一一个不等于自身的特点 function _isNaN(val) { if (val !== val) { ...
  • JS 前台如何判断某变量值是否NAN

    千次阅读 2018-12-24 17:52:32
    1.什么是NAN NAN=Not A Number,即“不是数字”,为了方便理解,我们可以想成是数学概念中的无穷。 假设 变量 test_var 是NAN,那么: 1. test_var==test_var ...NAN的变量不与任何相等,包括它自己,因此...
  • js中, 由于浮点数的精度的原因,NaNNaN是不...利用js自带的方法isNaN来判断是否NaN是不准确的,因此可以利用NaNNaN不相等这特点来判断: var a = NaN;a !== NaN;//true var b = "aaaa";b !== NaN;//false
  • js NaN 值判断

    2020-04-28 11:22:38
    NaN 特殊的Number,其与所有其它均不等(包括自己)。 NaN === NaN; // false 判断 NaN 的唯一方法:isNaN() isNaN(NaN); // true
  • 教大家如何在js判断一个值是否是undefined,null,NaN,以及如何单独判断 平常开发过程中大家可能遇到一种问题,就是取页面某个的时候获取不到这个var就是undefined了,如果是数字类型的就成了NaN,这个时候判断...
  • 写了 str ="s"++; 然后出现Nan,找了一会。 收集资料如下判断: 1.判断undefined: var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined"); } 说明:...
  • js判断NaN

    2016-06-06 23:08:00
    NaN是什么? not a nunber //不是数字 js判断NaN?不是有isNaN?标准的函数库isNaN不可靠的。 isNaN(NaN);...还好NaNJavascript中唯一一不等于本身的,呵呵,写自定义函数来判断是不是NaN...
  • 1.判断undefined: ? 1 2 3 4 var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined"); } 说明:typeof 返回的是字符串,有六种可能:"number...
  • NaN全称是Not-A-Number(不是一个数字),我们可以通过Number.NaN来获得一个NaN,在类型转换失败时,我们常常会得到一个NaN,需要注意的是,NaNJS中唯一一个自身不相等的存在。 Number.NaN //NaN NaN === NaN //...
  • NaN值判断

    2021-05-11 17:43:36
    NaNJavaScript中唯一一不等于其自身的,所以可以这样来判断 var a = NaN; a !=a;// true javaScript遵循了IEEE浮点数标准要求——NaN不等 因为使用isNaN方法使用有弊端 isNaN(NaN); // true isNaN("aaa");// ...
  • javascript判断NaN

    2015-08-21 15:05:00
    功能: isNaN() 函数用于检查其参数是否是非数字。... 说明: isNaN() 函数可用于判断其参数是否NaN,该表示一个非法的数字(比如被 0 除后得到的结果)。 如果把 NaN 与任何(包括其自身...
  • 使用js判断a是不是NaN 类型

    千次阅读 2019-05-25 10:35:21
    isNaN :函数用来确定一个值是否NaN,如果给定NaN则返回值为true;否则为false。 var a = 123; var b = '123'; var c = 'adc'; var d = 'a13'; var e = '1a3'; console.log(isNaN(a)) co...
  • var x="abc"; //isNaN()函数判断是否NaN if (isNaN(parseInt(x))) { alert("非数字");...JS中,如何判断一个被转换的数是否NaN 转载于:https://www.cnblogs.com/macT/p/10212975.html...
  • JS如何判断值(undefined、null、NAN) undefined var arg = undefined; if (typeof(arg) == "undefined") { alert("undefined"); } null var exp = null; if (!exp && typeof(exp)!="undefined" &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,446
精华内容 14,178
关键字:

js判断一个值是不是nan