首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Under the Hood: NaN of JS

一、NaN 的本质 我们知道 NaN(Not A Number) 会出现在任何不符合实数领域内计算规则的场景下。比如 Math.sqrt(-1)就是 NaN,而 1/0 就不是 NaN。...同时需要注意的是,NaN 只会出现在浮点类型中,而不会出现在 int 类型里(当然 JS 并没有这个概念) 什么意思?用你熟悉的任何支持 int 和 double 两种类型的语言(比如 C)。...---- 两种 NaN 如果再细分的话,NaN 还可分为两种: Quiet NaN Signaling NaN 从性质上,可以认为第一种 NaN 属于“脾气比较好”,比较“文静”的一种,你甚至可以直接定义它...比如我们在 JS 中可以使用类似于 NaN+1,NaN+'123' 的操作,还不会报错。 而 Signaling NaN 就是一个“爆脾气”。...NaN 不等于 NaN ?

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    分享18个用于处理 null、NaN 和undefined 的 JS 代码片段

    检查 NaN: 要检查值是否为 NaN(非数字),可以使用 isNaN() 函数: if (isNaN(value)) { // Code to handle NaN value } 4....如果为 NaN,则默认为一个值: 如果值为 NaN,您可以使用 isNaN() 函数以及逻辑 OR 运算符来提供默认值: const result = isNaN(value) ?...将 null 或 undefined 转换为零: 如果需要将 null 或 undefined 转换为零,可以使用逻辑 OR 运算符和数字零: const result = variable || 0;...使用 NaN 进行短路评估: 如果值为 NaN,则可以使用逻辑 AND 运算符进行短路评估: const result = !isNaN(value) && someFunction(); 13....将 NaN 转换为布尔值: 要将 NaN 转换为布尔值,可以使用 isNaN() 函数和逻辑 NOT 运算符: const result = !isNaN(value); 17.

    63650

    彻底终结 Javascript 背后的隐式类型转换

    首先我们知道 [] 和 false 一个是对象, 一个是布尔值, 类型不同, 需要类型转换再做比较 要注意, JS 中规定, 如果 == 中有布尔值, 只能转换为数字, 那为什么不是转换成字符串呢?...字符串和数字比较会把字符串转换成数字 问题来了, 为什么不是把数字转换成字符串呢? 从设计者的角度可能会这样想 都转成数字能处理的复杂场景更多, 容错性更高!...我们不妨来看看 ‘abc’ == NaN 做比较的过程 因为 NaN 也是数字类型, 所以我们需要把 ‘abc’ 转换为数字 ‘abc’ == NaN 相当于 Number(‘abc’) == NaN...要是能转的话确实要转, 但 null 和数字0本身已经是 Primitive 了, 没有机会再走一遍 toPrimitive(), 因此等号两边始终无法转换成同类型, 只能返回 false 为什么 null...和上面的问题一样, null 和 undefined 都是 Primitive, 而且也不是字符串或者数字, 转无可转 但 JS 专门规定了 null == undefined 就是返回 true, 属于一种专门的特殊情况

    90320

    JS 将伪数组转换成数组 🎄

    本文简介 在 JS 中,伪数组 是非常常见的,它也叫 类数组。伪数组可能会给 JS 初学者带来一点困扰。 本文将详细讲解 什么是伪数组,以及分别在 ES5 和 ES6 中将伪数组转换成真正的数组 。...转换 将伪数组转换成真正的数组的方法不止一个,我们先从 ES5 讲起。 ES5 的做法 在 ES6 问世之前,开发者通常需要用以下的方法把伪数组转换成数组。...console.log(args); } doSomething('一', '二', '三'); // 输出: ['一', '二', '三'] 复制代码 Array.from 的主要作用就是把伪数组和可遍历对象转换成数组的...把字符串转换成数组 let msg = 'hello'; let msgArr = Array.from(msg); console.log(msgArr); // 输出: ["h", "e", "l

    2.6K20

    JS中的NaN和isNaN,简直是双重人格?

    number数字类型   包括数字NaNNaN:not a number 但是它是数字类型的 isNaN的用法:检测当前值是否不是有效数字,返回true代表不是有效数字,返回false是有效数字...Number('13px') ->NaN 如果当前字符串中出现任意一个非有效数字字符,结果则为NaN Number('13.5') ->13.5 可以识别小数 [布尔转数字] Number(true)...NaN的比较   NaN==NaN:false NaN和谁都不相等,包括自己 if(Number(num)==NaN){   alert('num不是有效数字!')...;  } NaN和谁都不相等,条件永远不成立(即使num确实不是有效数字,转换的结果确实是NaN,但是NaN!...0 =>false 两个叹号只剩下转换为布尔类型了,等价于Boolean // [程序自己需要转换 =>一般都是条件判断的时候],if内的值会默认转换成布尔类型,如果为真执行,为false则不执行 if

    1.4K30

    python将字符点阵转换成数字图片

    有一串字符串,字符串一共组成了10数字(从0-9),每个数字都是5行5列构成的。 ? 接下来,我的目标是将其变成5x5像素对应的数字图片。(下面的图片是放大10倍的效果) ?...切割数字 切割出第一个数字0 分析:每一行都有50个字符,每一行的前5个都是属于数字0的,通过字符串的切片获取。 ? 同理,利用循环切割出所有数字。...,这里主要是14行range里面几个数字的理解,第一个表示开始的位置,数字0从0开始,1从1开始,前面乘上num就可以适应不同的数字的,250表示结束,50代表步长,每行50个字母,刚好起到换行 的效果...打印查看效果,每一个数字的字符都已经切割成功。 ?...将数字变成图片 接下来就是将数字变成图片了,原理很简单,先创建一张55像素空白的图片,接着循环对比,如果该位置是@字符,就将该处的像素通过putpixel方法设置为黑色,直到循环完所有字符得到最终结果。

    1.9K20

    JavaScript第三节

    数值 -number 1 Number() console.log(Number('55')); Number()可以把任意值转换成数值类型,但是如果字符串中有不是数字的字符,返回NaN 2 parseInt..., NaN,这几个值会转换成false,其他值都会转换成true 这个代表的五大基本类型 // 没有值 => false // 有值 => true // number string undefined...a); NaN NaN: not a number, 表示一个非数字js中,NaN用来表示一个非数字的特殊值,当发现无法进行运算时,js不会报错,而是会返回一个NaN NaN的注意事项: NaN的类型是...number类型的,表示一个非数字 NaN不等于任何值,包括NaN本身 通过isNaN()可以判断是否是一个数字,返回false的时候,表示是一个数字。...var num = +'abc' console.log(num); //NAN // 判断是不是文字 var a = 123; var b = '123'; // Nan 不是数字 // true

    30720

    javascript字符串转数字

    三种转换方式:转换函数、强制类型转换、利用js变量弱类型转换 1. 转换函数 js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。...parseInt()方法首先查看位置0处的字符,判断它是否是个有效数字;如果不是,该方法将返回NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的测试。...这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。...字符串中包含的数字字面量会被正确转换为数字,因此字符串 "0xA "会被正确转换为数字10。不过,字符串 "22.5 "将被转换成22,因为对于整数来说,小数点是无效字符。...用Number()进行强制类型转换, "4.5.6 "将返回NaN,因为整个字符串值不能转换成数字

    2.6K20
    领券