展开

关键词

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 ?

29320

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

number数字类型   包括数字和NaN,NaN:not a number 但是它是数字类型的 isNaN的用法:检测当前值是否不是有效数字,返回true代表不是有效数字,返回false是有效数字 [对象] ({}).toString() ->'[object Object]' ->NaN [数组] [12,23].toString() ->'12,23' ->NaN [12].toString NaN的比较   NaN==NaN:false NaN和谁都不相等,包括自己 if(Number(num)==NaN){   alert('num不是有效数字!') ;  } NaN和谁都不相等,条件永远不成立(即使num确实不是有效数字,转换的结果确实是NaN,但是NaN! =NaN的) if(isNaN(num)){   //=>检测是否为有效数字,只有这一种方案   alert('num不是有效数字!')

40930
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

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

    JS基础测试: NaN*0+2 的运算结果是多少?​

    考核内容:js数据类型的使用 题发散度: ★★★ 试题难度: ★★★ 解题思路: 定义和用法 NaN 即非数值(Not a Number),NaN 属性用于引用特殊的非数字值,该属性指定的并不是不合法的数字 NaN 属性 与 Number.Nan 属性相同。 提示:请使用 isNaN() 来判断一个值是否是数字。原因是 NaN 与所有值都不相等,包括它自己。 语法 Number.NaN 也就是说 NaN不能用于任何数学计算; 但是可以使用做为字符串连接运算; 参考代码: ? 答案: A. NaN

    65730

    《JavaScript高级程序设计》学习笔记(1)

    JS中,标识符是区分大小写。当然,标识符不能是关键字和保留字。 5、JS中有5种简单数据类型(也称基本数据类型)和1种复杂数据类型。 例如:1/0 返回的就是NaNNaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。 针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。 7、JS中的操作符:由于JS中的变量是松散类型的,所以在各种操作符之间存在前后两个操作数的类型不一样的情况,所以这一部分的内容比较复杂,也存在各种情况。在这里将简单介绍一下各种操作符。

    46440

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

    正文从这开始~~ 网上已经有很多 JS 隐式类型转换相关的博客, 很多面试者专门复习过此问题, 但依然挡不住面试官一个又一个的无聊小题目~ [] == false // true !! 看完此文你可以完全不需要背诵复杂冗长的 ECMA 规范, 用逻辑即可推理 现在, 我们假装从 JS 设计者的角度来聊聊隐式类型转换, 首先要记住, JS 作者的”初衷”是美好的, 他希望 == 是最顺手最快捷的比较 首先我们知道 [] 和 false 一个是对象, 一个是布尔值, 类型不同, 需要类型转换再做比较 要注意, JS 中规定, 如果 == 中有布尔值, 只能转换为数字, 那为什么不是转换成字符串呢? 这就是 JS 对新人友好的地方, JS 的对象都可以打印输出, 自带人性化展示, 在终端上人性化展示, 那当然是用字符串啦, 因此选择用 toString 转换 Primitive 理所因当 我们来看看数组的 为什么 NaN !== NaN?

    11820

    cc++ -nan(ind) NAN

    nan -- 表示 出错,“不是一个数” not a number 的缩写。 按 IEEE 754 国际标准,当运算中出现无效数据时,给出 NaN. 许多情况会出现,例如 0 除 0,负数开平方,... nan  是 "not a number"  的缩写,  即计算结果 不是个 数。

    1.4K30

    js程序设计01——基本概念

    本文为js高级程序设计学习笔记,笔记中不乏本人学习js的一些心得demo,喜欢的朋友可以直接参考原书“javascript高级程序设计”,写本笔记的目的是对js中容易出错、不易理解的地方作个笔记,以免后期继续踩坑 、下划线或$,之后可以是数字、字母、下划线或$;标识符不能使用系统关键字及保留字,比如var、true、false、null、let等 严格模式: 严格模式是ECMAScript 5中引入的概念,是为js 3、数据类型 ECMAScript 5定义js有5中基本类型+1种复杂数据类型(引用类型),基本类型:Undefined、Null、Boolean、Number、String,复杂类型:Object。 转换为false;对于Object类型来说,转换为true,null转换为false 关于NaNNaN(Not a Number)即非数值,是一个特殊数值,NaN有2个特点: 任何涉及NaN的操作都会返回 NaN NaN与任何值都不相等,包括NaN本身 关于NaN的测试如下: console.log(NaN / 10);    //NaN console.log(NaN / 0);      //NaN

    28600

    JS 中有趣的事实

    使用 JS 有很多有趣的地方。尽管工程师们每天都在与之打交道,但仍有一些语言没有被开发出来。本广将介绍一些你可能想不到的JS特性。 NaN 是一个 number 类型 NaN是一个 number 类型。而且, NaN 不等于它自己。 实际上 NaN不等于任何东西,验证一个变量是否是 NaN 可以使用 isNaN() 方法来判断。 > typeof(NaN) "number" > NaN === NaN false null 是一个对象 null是一个对象。听起来奇怪!对?但这是事实。 实际上,JS 后面 `return` 添加一个 `;`。

    24030

    JS 中有趣的事实

    使用 JS 有很多有趣的地方。尽管工程师们每天都在与之打交道,但仍有一些语言没有被开发出来。本广将介绍一些你可能想不到的JS特性。 NaN 是一个 number 类型 NaN是一个 number 类型。 而且,NaN 不等于它自己。 实际上NaN不等于任何东西,验证一个变量是否是 NaN 可以使用 isNaN() 方法来判断。 > typeof(NaN) "number" > NaN === NaN false null 是一个对象 null是一个对象。 听起来奇怪! 对? 但这是事实。 > null instanceof Object false undefined 可以被定义 undefined不是 JS 中的保留关键字, 你可以为其指定值也不会报错,如果声明一个变量没有赋值 实际上,JS 后面 `return` 添加一个 `;`。

    35930

    从一张搞笑图看JavaScript的语法和特性

    js中,所有数字的类型都为number。其中,一个特殊的数字就是NaN(Not a number),虽然名字叫“不是数”,但为了计算的一致性(IEEE745亦规定),NaN依旧是数字类型的。 任何NaN参与的数字计算的结果都还是NaN。(NaN-NaN! =0)还需要注意的是,js中被0除非但不会报错,而且结果也不是NaN(只有0/0是NaN),而是Infinity(被除数为正)或-Infinity(被除数为负)。 但是js魔法并不需要形参和实参相匹配,多的实参忽略,少的就是undefined。事实上,js还提供了一种访问参数的方法。 我是希望借这张图聊到一些js的语法特性,以加深对js的理解。这两点在我看来有本质的区别。

    7120

    JavaScript笔记(三)

    ” 20 “20” true “Runoob” NaN “Runoob” true [ ] 0 “” true [20] 20 “20” true [10,20] NaN “10,20” true [“ Runoob”] NaN “Runoob” true [“Runoob”,“Google”] NaN “Runoob,Google” true function(){} NaN “function(){ }” true { } NaN “[object Object]” true null 0 “null” false undefined NaN “undefined” false 参考来源https ://www.runoob.com/js/js-type-conversion.html ction(){}" | true | | { } | /www.runoob.com/js/js-type-conversion.html 后续参考https://www.runoob.com/js/js-tutorial.html 注:笔记仅供学习交流,

    13920

    javascript 红皮高程(8)

    今天继续,JS的数值转换。这里面的坑啊, 真是太多了。 -字符串包含十六进制的,转为相同大小的十进制; -字符串是空的,转为0; -字符串是上述之外的字符,转为NaN。 如果第一个字符不是数字或负号,它返回NaN; 就是说,parseInt()转换空字符串,返回NaN。 这也是JS的坑啊。不知道这些东西,用JQ习惯了,再用原生JS很难写的圆满。 parseFloat就比较好了,这货只解析十进制,其它不认。 JS的数值转换这块,我得好好再复习复习,,面试题的坑这里有许多。 重学javascript 红皮高程(6)

    250100

    一句话判断IE浏览器

    这篇笔记主要介绍了js判断是否为ie的方法,有需要的朋友可以参考一下 第一种: if(window.addEventListener){ alert("not ie"); }else if(window.attachEvent navigatorName ){ isIE = true; alert("ie") }else{ alert("not ie") } 第四种: 技术牛人写的世界上判断是否IE浏览器之最短的js [1,2].toString()); --这在IE与非IE上都相同,都会弹出"1,2"   alert([1,]);//相当于alert([1,].toString());--在非IE的标准浏览器上,js 浏览器上则为数字1 //下面再来看看很有个性的NaN alert(NaN==true);//弹出 false alert(NaN==false);//弹出 false alert(NaN==NaN);/ NaN);//相当于alert(!(NaN==true)),根据上面的解释当然是弹出true //所以,alert(!

    69130

    JS中一定要了解的数据类型和数据转换

    一、数据类型 前言 Js中的类型只有6种,其中基本数据类型有5种分别为string,number,boolen,null,undefined,引用类型有一种,就是object,object是一个大的综合体 ,在JS中除了那5个基本数据类型以外,其他的一切皆对象。 以下是最近自学js整理的一些笔记,希望能让更多初学者了解到数据类型的基本概念。 == NaN; // false ---> NaN 注意:这是JS中一个特殊的表示,NaN表示不等于任何值.这个数值表示本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。 NaN NaN // 如果第一个字符是数字会解析,直到遇到非数字结束 // 如果第一个字符不是数字或者符号就返回NaN 2.3 字符串特别说明 **1.

    34100

    JavaScript第三节

    _) ** 转换成 数值 -number 1 Number() console.log(Number('55')); Number()可以把任意值转换成数值类型,但是如果字符串中有不是数字的字符,返回NaN NaN => false Boolean() console.log(Boolean(1)); console.log(Boolean(0)); !! 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

    14320

    前端学习之JavaScript中的 NaN 与 isNaN

    console.log(NaN); // NaN 在以下两种场景中,可能会产生 NaN 值 。 【1】表达式计算 一个表达式中如果有减号 (-)、乘号 (*) 或 除号 (/) 等运算符时,JS 引擎在计算之前,会试图将表达式的每个分项转化为 Number 类型(使用 Number(x) 做转换) 100 - '2a' ; // NaN '100' / '20a'; // NaN '20a' * 5 ; // NaN undefined - 1; // NaN, Number(undefined) 类型,这是因为JS表达式的执行顺序是按照运算符的优先级从左到右依次进行的,如果加号 (+) 两边的变量都是 Number 类型时,才会做数字相加运算,如果其中有一个变量是字符串,则会将两边都作为字符串相加 'abc' - 3 // NaN parseInt('abc') // NaN parseFloat('abc') // NaN Number('abc') // NaN 对于 数字+字符

    35930

    JavaScript之JS的数据类型

    )、空(Null)、未定义(Undefined) 复杂数据类型(1):对象(Object) 注意:Array、Date、Math、Error Set(ES6).....都是属于Object中 一、JS 1.2 typeof 操作符 由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字。 js不区分 整型和 浮点型 特殊值 NaN (非数字类型) NaN跟任何值进行任何运算,结果仍然NaN.跟谁都不相等,包括自己。 //NaN 跟 任何值(包括0) 进行任何运算 结果依然是NaN console.log(NaN * 0); //结果是NaN / cars=null; person=null; 二、三大引用类型 js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构, 用于将数据和功能组织在一起。

    59830

    js中字符串转换为数字

    js 字符串转化成数字的三种方法主要有 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数:   js提供了parseInt()和parseFloat()两个转换函数。 只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。 ") 5.5   Number( "56 ") 56   Number( "5.6.7 ") NaN   Number(new Object()) NaN   Number(100) 100 最后一种强制类型转换方法 利用js变量弱类型转换   举个小例子,一看,就会明白了。    <script>     var str= '012.345 ';     var x = str-0;     x = x*1;   < /script>   上例利用了js的弱类型的特点,只进行了算术运算

    25541

    给初学者:JavaScript 的常见注意点

    == null && typeof someVal === 'object') { // someVal 是一个对象 } 做数值计算时,注意 JS 数值类型的精度 在 JS 里,所有的 number == NaN NaN 之所以 NB,因为它有一个独一无二的特性。对!独一无二! 那就是: NaN === NaN // false var a = NaN; a === a // false NaN 不等于它自己。 你可以使用这个特性判断一个变量是否为 NaN,一个变量如果不等于它自己,这个变量一定是 NaN。 还有一个方式是使用 Number.isNaN。 null undefined NaN 0 !!! 空字符串('') !!!

    46250

    相关产品

    • Serverless  SSR

      Serverless SSR

      Serverless SSR 基于云上 Serverless 服务,开发了一系列服务端渲染框架组件,目前支持 Next.js, Nuxt.js 等常见 SSR 框架的快速部署,帮助用户实现框架迁移, “0”配置,SEO 友好,首屏加载速度快,为用户提供了便捷实用,开发成本低的网页应用项目的开发/托管能力。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券