相等判断

JavaScript提供三种不同的值比较操作:

  • 严格相等 ("triple equals" 或 "identity"),使用 === ,
  • 宽松相等 ("double equals") ,使用 ==
  • 以及 Object.is (ECMAScript 2015/ ES6 新特性)

简而言之,在比较两件事情时,双等号将执行类型转换; 三等号将进行相同的比较,而不进行类型转换 (如果类型不同, 只是总会返回 false );  而Object.is的行为方式与三等号相同,但是对于NaN和-0和+0进行特殊处理,所以最后两个不相同,而Object.is(NaN,NaN)将为 true。(通常使用双等号或三等号将NaN与NaN进行比较,结果为false,因为IEEE 754如是说.) 请注意,所有这些之间的区别都与其处理原语有关; 这三个运算符的原语中,没有一个会比较两个变量是否结构上概念类似。对于任意两个不同的非原始对象,即便他们有相同的结构, 以上三个运算符都会计算得到 false 。

什么时候使用 Object.is 或者 三等

object.is 会对对象属性描述进行判断,如果不需要判断属性描述的情况下应优先使用三等

对象属性描述   参考 Object.defineProperty

类型判断

这里列举出常用的三种方法可以判断数据的类型

  • typeof (obj)
  • obj  instanceof  constructor
  • obj.constructor

先说第一种 typeof

  typeof只能用于判断基本类型(即非引用类型  BooleanFunctionNumberString, undefined,)如

var arr = ['eko','tom','jerry'] ;
console.log(typeof(arr));结果输出:object

再来说说第二种 instanceof

instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性

//使用格式   object instanceof constructor
实例console.log(arr instanceof Array);输出: true

用着中办法可以判断出引用类型的类型

第三种 object.constructor

constructor 是对象__proto__中的一个属性,指向其构造函数

console.log(arr.constructor==Array);输出:true

转载于:https://www.cnblogs.com/xiaoliwang/p/9035428.html

JS 相等判断 / 类型判断相关推荐

  1. [JS基础] 之类型判断

    前言 首先需要特别说明的是,JavaScript 是面向对象的编程语言 (OOP). 既然是面向对象的编程语言,自然就可以不同类型的对象. 那在JavaScript 中, 有哪些对象类型呢? 这些类型 ...

  2. js 一网打尽之类型判断

    let bool = true; let num = 1; let str = 'abc'; let und= undefined; let nul = null; let arr = [1,2,3, ...

  3. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断...

    C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25. ...

  4. JS类型判断、对象克隆、数组克隆

    类型判断 我们先说一下JS的数据类型,我们一般说JS有六大数据类型(ES6以前)分别是: 基本数据类型 Number String Boolean null undefined 引用数据类型 obje ...

  5. 看jquery3.3.1学js类型判断的技巧

    需要预习:call , typeof, js数据类型 1. isFunction中typeof的不靠谱 源码: var isFunction = functionisFunction( obj ) { ...

  6. js php 数据类型判断,【js基础】变量类型判断

    类型判断方法比较: 如果需要想详细了解,请看下文: 注:原封不动复制备份,防止删帖 在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, B ...

  7. JavaScript 学习笔记— —类型判断

    //1 判断是否为数组类型var a=[0];console.log(isArray(a));function isArray(obj){return (typeof obj=='object') & ...

  8. SpringMVC上传文件以流方式判断类型附常用类型

    1 // 此类中判断类型所截取的byte 长度暂不确定,请使用者测试过使用 2 package com.tg.common.other; 3 4 import com.tg.common.tginte ...

  9. js在上传图片前判断大小

    js在上传图片前判断大小 这个可以用javascript实现,效果还可以,主要是因为javascript里居然有Image对象,可以取得其属性 <script language=javascri ...

最新文章

  1. 陆奇谢幕后,百度的“新”时代
  2. java se用哪个eclipse_【JAVA SE基础篇】5.eclipse的使用和运行
  3. hdu1156(简单线段树 模板题)
  4. Bit-Z转入GXS、PPS、SPHTX、EOS未到账解决方案
  5. js进阶 9-11 select选项框如何动态添加和删除元素
  6. 2017 php7 使用率,让PHP7达到最高性能的几个Tips
  7. nginx-URL重写
  8. 幼儿园 php,input.php
  9. Channel SDK (渠道SDK) for Unity
  10. 浅谈 EF CORE 迁移和实例化的几种方式
  11. 浏览器里面看到的表单数据映射到python_python爬虫入门01:教你在 Chrome 浏览器轻松抓包...
  12. 希沃展台如何使用_展商该如何做好展台设计?
  13. CSS级联样式表-css选择器
  14. java 高并发im_java高并发(四)并发编程与线程安全
  15. [渝粤教育] 广东-国家-开放大学 21秋期末考试马克思主义基本原理概论(A)10882k1 (2)
  16. 使用CleanMyMac软件进行文件清理
  17. 思岚雷达rplidar S1配置调试全纪录
  18. 联想服务器修改mac,修改Thinkpad E420的无线网卡MAC地址?
  19. python自然语言处理学习笔记一
  20. XE中FMX操作ListBox,添加上千条记录(含图片)

热门文章

  1. 【Oracle】Oracle中使用转义字符
  2. 获取文件的后缀名 和 Process进程
  3. tomcat中conf\Catalina\localhost目录下的J2EE项目META-INF配置文件
  4. 【Linux】关于Linux操作系统的配置步骤
  5. udt编写高性能服务器,基于UDT协议的Oracle数据库远程备份的设计和实现
  6. selector选择器查询
  7. 数据库-linux安装mysql
  8. php递归删除空数组,php 递归删除非空文件夹示例
  9. shiro 升级_小米11消息再次确认:骁龙875有独占期,超广角镜头大升级
  10. 24岁大专非科班转行前端开发可行性有多少?