js中的 == ===
js中的数据类型
不算上ES6新增的Symbol和BigInt,数据类型共有如下几种:
- number
- string
- boolean
- undefined
- null
- object
js中判断数据类型的方法
由于js是一种弱类型的语言,所以在很多地方都会发生隐式转换。
== 比较:
==
判断值是否相等,如果比较的两方类型不同,会首先进行类型的隐式转换,再进行比较。
1.特殊
NaN == NaN // false
null == undefined // true
null === null // true
在相等性检查 == 中,不能将
null
和undefined
转换为其他任何值,除了它们之间互等外,不会等于任何其他的值。
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中的 == ===相关推荐
- 在js中使用HashMap数据结构,在js中使用K,V数据结构
首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...
- [JavaScript] 探索JS中的函数秘密
函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...
- 在JS中最常看到切最容易迷惑的语法(转)
发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用 语义1,组织复合语句,这是最常见的 Js代码 if( condition ) { //... }e ...
- js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...
原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...
- js中substr,substring,indexOf,lastIndexOf的用法
js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...
- js中的各种宽高以及位置总结
在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...
- WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt
主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...
- 彻底理解js中this
相关博文:http://blog.csdn.net/libin_1/article/details/49996815 彻底理解js中this的指向,不必硬背. 首先必须要说的是,this的指向在函数定 ...
- 彻底理解js中this的指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
最新文章
- 2022一建改革加考英语和计算机,2021年一建考试大改革吗 考六门科目吗
- SAP MM MB21 创建预留界面批量为多个行项目勾选M标记
- 苹果7【】闪存测试软件,不厚道!iPhone7大容量版竟采用TLC闪存
- 对科目***货币 ***未定义汇率差额科目
- Linux 关闭与重启
- POJ - 1091 跳蚤(容斥原理+数论)
- usb接口供电不足_AMD RX 6000 系列显卡配备USB-C 接口,支持外接供电
- linux awk if 多个条件,linux shell awk 流程控制语句(if,for,while,do)详细介绍
- 去除Many2one字段的“创建并编辑”选项
- 西门子/AB/ModbusTCP/FX3U 安卓手机app软件,二代Teslascada2电脑组态版本app Runtime
- 有些微信小程序助你提高生活效率!
- Stolz定理及其在求极限上的应用
- 用vbs写九九乘法表
- 创建AWS VPC Peering
- 安装Pure-ftpd
- 游戏联网必备: 国内外实时对战服务详细对比
- VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
- Navicat15安装使用
- 使用 adb 对 Android 声音控制全面适配
- 小妞会装机 -- 一个装机软件的开发笔记( 三)
热门文章
- Android EditText 字数限制以及设置中文及中文符号算两个字符,英文及英文符号算一个字符的实现
- 难倒新加坡人的华语测试题,中国人会答吗?
- js parseint java,javascript当中parseInt用法
- 如何利用github搭建一个个人网站
- 利用CSS伪元素写三角形
- jeeplus绘制流程图
- 来吧!是时候升级您的领英技术档案了!
- 【神经网络】2021-ICCV-Pyramid Vision Transformer:用于无卷积密集预测的多功能骨干
- 使用vs2008c++语言开发activex控件教程,使用VS2008C_开发ActiveX控件.pdf
- 使用vs2008c++语言开发activex控件教程,VS2008 在IE中 调试 ActiveX控件