一、补充

1.js中的三大特殊数据:undefined、null、NaN

  • NaN :非法的数值运算得到的结果

    • 特殊之处:

      1. 是一个数值型数据,但不是一个数字
      2. NaN不等于任何值,和任何数据都不相等,NaN不等于NaN
    • 检测方法:isNaN(要检测的数据)

      • true:检测是否为NaN或是否能转为NaN
      • false:检测结果不是NaN或不能转成NaN

      // 计算机认为每一个NaN都是非法运算的结果,每一个NaN的来源都不一样
      console.log(NaN == NaN); //false // 非法的运算会得到NaN,但不知道这个运算是否为非法运算
      // js提供了一个检测是否为NaN的方法
      console.log(isNaN(NaN)); //true
      console.log(isNaN(123)); //false console.log(isNaN("hello")); //true
      // 还会发生隐式类型的转换
      // 场景:是否可以转为数值,"hello"无法转为数值,所以是非法运算结果为true console.log(isNaN("123")); //false
      // 可以转为数值,数值不是NaN,所以结果为false console.log(isNaN("123hello")); //true
      //是严格转换 console.log(isNaN("123.4")); //false
      //可以识别小数点,可以转为数值
  • undefined- 未赋值 类型是undefined null- 空 类型是object对象

    • 特殊1:undefined 和 null 在关系类型运算时,两边都被隐式类型转换成了一致的数据 0/false
    • 特殊点2:undefined被转换为NaN,null被转换为0
  • 如何判断三大特殊的值分别是谁

    • NaN可以使用isNaN判断

      • isNaN(要判断的值)
           //隐式转换
      console.log(undefined == null); //true
      console.log(undefined == NaN); //false,有NaN肯定不相等
      console.log(null == NaN); //false
      // 三个等号必然不相等,类型肯定不相等 //强制转换
      console.log(Number(undefined)); //NaN
      console.log(Number(null)); //0 // 特殊点1:undefined 和 null 在关系类型运算时,两边都被隐式类型转换成了一致的数据 0/false
      // 特殊点2:undefined被转换为NaN,null被转换为0 console.log(undefined == 0); //f
      console.log(null == 0); //f // 如何判断是哪一个特殊的值
      // 判断undefined和null:
      // typeof()
      //typeof undefined得到undefined
      //typeof null得到object // 如何判断null和真正的对象
      // 真正的对象的明显标志:任何两个对象都不相等,只要相等了,就是只有一个对象
      // null是可以直接等于自己null
      // console.log(null == null); //t
    • undefined可以使用typeof判断
      • typeof 要判断的值或变量
    • null需要配合typeof和关系运算符判断
      • typeof 要判断的值或变量 === "object"
      • 还需要要判断的值或变量 == null

最新文章

  1. Backbone,Marionette,Talent学习笔记
  2. .NET (一)委托第一讲:什么是委托
  3. SEO技巧汇集
  4. git branch 管理常用命令
  5. Guzzle – 构建 RESTful Web 服务的 PHP HTTP 框架
  6. Wijmo金融图表系列之等量图&成交量柱状图
  7. Hadoop no.1
  8. 如何生成a1,a2,a3,a4这样的变量名
  9. 升级NppAstyle中的AstyleLib为最高版本
  10. RHEL 6.4 64bit kettle5.01导入xlsx格式的excel时报错
  11. Lambda表达式图解
  12. 微信小程序实例教程(一)
  13. ASP.NET没有魔法——ASP.NET MVC 与数据库大集合
  14. Linux 查找文件命令 find whereis locate
  15. ABP实践(3)-ASP.NET Core 2.x版本(从创建实体到输出api)简单实现商品列表及增删改
  16. c# 匿名函数
  17. Android遍历API (1) 动画篇——克隆动画AnimationCloning
  18. java基础解析系列(二)---Integer
  19. U帮忙U盘启动盘制作
  20. .net连mysql数据库汇总

热门文章

  1. javascript 高阶函数 实现 AOP 面向切面编程 Aspect Oriented Programming
  2. shell脚本在CentOS7自动更包
  3. 定要过python二级 第一套
  4. P4258-[WC2016]挑战NPC【带花树】
  5. Winform 窗体自适应
  6. 轻松集成腾讯云短信服务实现短信发送(Java实现)
  7. 左手IRR,右手NPV,掌握发家致富道路密码
  8. HTTP基础系列之:一文搞懂URL
  9. Linux 下 SVN 的安装和配置
  10. Vulnhub实战-Dockhole_2靶机👻