js中的数据类型

不算上ES6新增的Symbol和BigInt,数据类型共有如下几种:

  • number
  • string
  • boolean
  • undefined
  • null
  • object

js中判断数据类型的方法

由于js是一种弱类型的语言,所以在很多地方都会发生隐式转换。

== 比较:

==判断值是否相等,如果比较的两方类型不同,会首先进行类型的隐式转换,再进行比较。

1.特殊

NaN == NaN         // false
null == undefined  // true
null === null      // true

在相等性检查 == 中,不能将nullundefined转换为其他任何值,除了它们之间互等外,不会等于任何其他的值。

2.对象比较

两个对象进行比较,比较的是堆内存的地址

{} == {}  // false
[] == []  // false
[] == {}  // false

3.对象和字符串进行比较

对象toString()转换为字符串后再比较

4.剩余情况
(boolean, string, number 之间的比较)

剩余的所有数据类型不一样的情况:都是先转换为数字,即调用Number()

这里介绍一些转成number后的值:

boolean —— number

true 转为1
false 转为0

string —— number
  • 字符串为数字:转为对应的数值。
  • 字符串为空:转为0。
  • 字符串:有字母 返回 NaN (和parseInt区别,parseInt是从头开始找直到字母截止)

特殊情况:

  • 字符串开头中有0x:转为十六进制对应的十进制数值
  • 字符串中有科学计数法e:字符e(后面加number) 转为科学计数法计算后到结果。
  • 字符串中有一个小数点:转为对应的浮点数值。如果有第二个小数点则返回NaN

结果如下:

undefined & null —— number

null: 转为0 (虽然Number(null)得到的结果为 0,但是 0 == null 的结果还是false)
undefined:转为NaN

object —— number

{} 转为 NaN
[] 转为 0

===

=== 判断不仅需要值相等,还需要类型相等。所以就不会像 ==发生类型转换。推荐使用=== 代替==

js中的 == ===相关推荐

  1. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  2. [JavaScript] 探索JS中的函数秘密

    函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...

  3. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  4. 在JS中最常看到切最容易迷惑的语法(转)

    发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用 语义1,组织复合语句,这是最常见的 Js代码  if( condition ) { //... }e ...

  5. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  6. js中substr,substring,indexOf,lastIndexOf的用法

    js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...

  7. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  8. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  9. 彻底理解js中this

    相关博文:http://blog.csdn.net/libin_1/article/details/49996815 彻底理解js中this的指向,不必硬背. 首先必须要说的是,this的指向在函数定 ...

  10. 彻底理解js中this的指向

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

最新文章

  1. 2022一建改革加考英语和计算机,2021年一建考试大改革吗 考六门科目吗
  2. SAP MM MB21 创建预留界面批量为多个行项目勾选M标记
  3. 苹果7【】闪存测试软件,不厚道!iPhone7大容量版竟采用TLC闪存
  4. 对科目***货币 ***未定义汇率差额科目
  5. Linux 关闭与重启
  6. POJ - 1091 跳蚤(容斥原理+数论)
  7. usb接口供电不足_AMD RX 6000 系列显卡配备USB-C 接口,支持外接供电
  8. linux awk if 多个条件,linux shell awk 流程控制语句(if,for,while,do)详细介绍
  9. 去除Many2one字段的“创建并编辑”选项
  10. 西门子/AB/ModbusTCP/FX3U 安卓手机app软件,二代Teslascada2电脑组态版本app Runtime
  11. 有些微信小程序助你提高生活效率!
  12. Stolz定理及其在求极限上的应用
  13. 用vbs写九九乘法表
  14. 创建AWS VPC Peering
  15. 安装Pure-ftpd
  16. 游戏联网必备: 国内外实时对战服务详细对比
  17. VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
  18. Navicat15安装使用
  19. 使用 adb 对 Android 声音控制全面适配
  20. 小妞会装机 -- 一个装机软件的开发笔记( 三)

热门文章

  1. Android EditText 字数限制以及设置中文及中文符号算两个字符,英文及英文符号算一个字符的实现
  2. 难倒新加坡人的华语测试题,中国人会答吗?
  3. js parseint java,javascript当中parseInt用法
  4. 如何利用github搭建一个个人网站
  5. 利用CSS伪元素写三角形
  6. jeeplus绘制流程图
  7. 来吧!是时候升级您的领英技术档案了!
  8. 【神经网络】2021-ICCV-Pyramid Vision Transformer:用于无卷积密集预测的多功能骨干
  9. 使用vs2008c++语言开发activex控件教程,使用VS2008C_开发ActiveX控件.pdf
  10. 使用vs2008c++语言开发activex控件教程,VS2008 在IE中 调试 ActiveX控件