乐趣区

关于前端:NaN-数据类型-回答来源于chatPT

答:NaN 是一个非凡的数值类型,示意“不是一个数”(Not a Number)。它的数据类型是 number。NaN 的主要用途是在数学和计算中示意无意义或不可确定的值。

NaN 因为具备唯一性和不等于任何值,因而在一些非凡状况下被认为是有用的,其中包含:

  1. 转化非数字值:如果尝试将非数字值转换为 number 类型,后果为 NaN。
    例如:

    const a = parseInt('hello');
    console.log(a); // NaN
  2. 数学函数中的谬误或不非法操作:例如:试图对正数或空值取平方根都会产生 NaN。
    例如:

    const a = Math.sqrt(-1);
    console.log(a); // NaN
  3. 在一些操作后,JavaScript 引擎无奈返回正当的数值时,也会返回 NaN。
    例如:

    const a = 0/0;
    console.log(a); // NaN

    须要留神的是,在应用 NaN 时须要分外小心,因为 NaN 与任何数值进行运算的后果均为 NaN,即 NaN 的存在往往会产生不可意料的后果。因而,在应用 NaN 时,必须做出非凡的解决,以确保得出正确的后果,并尽可能防止应用 NaN,以便放弃代码的可读性和正确性。

eg:
(1)如果有非数值参加计算, 运行后果就是 NaN

   eg:  var str1 = '北京';
        var str2 = '上海';

 这两个变量中存储的数据, 都不是数值, 执行后果就是 NaN;

(2)有 NaN 参加, 执行后果也是 NaN

eg: a.  var res1 = str1 - str2;
        console.log(res1);
    b.  res2 = 100 - str1;
        console.log(res2);

(3)如果是 用 + 加号参加运算的,两侧都是数值, 执行加法运算:然而有一个是字符串, 就执行字符串拼接操作。

   eg: console.log ('北京' + 100 == '北京' + 100); 实现的是字符串拼接。总结:1)NaN 尽管示意是一个非数字 , 然而个别是算术运算执行的后果,因而 NaN 依然是 数值类型;2)执行运算时(非加法运算)只有有 NaN 参加, 执行后果都是 NaN;3)如果是加法运算 , 且有一个是字符串,那么 执行 字符串拼接操作;都是数值时则执行 加法运算;4)NaN 永远 不会等于 NaN  即 NaN == NaN  执行后果是 false

因为在 JavaScript 的规定中, NaN 示意的是非数字, 然而这个非数字也是不同的,因而 NaN 不等于 NaN 即 两个 NaN 永远不可能相等。

例如:a) console.log(NaN == NaN); // 执行后果为 false

b) console.log (‘ 北京 ’ – 100 == ‘ 北京 ’ – 100); // 执行后果为 false

因为 比拟的 b)中不是 ‘ 北京 ’-100 这个表达式,而是 ‘ 北京 ’-100 的后果,左侧 ‘ 北京 ’-100 后果是 NaN,右侧 ‘ 北京 ’-100 后果是 NaN 然而 NaN 不等于 NaN 因而最初的执行后果为 false。

退出移动版