zoukankan      html  css  js  c++  java
  • JS 相等判断 / 类型判断

    相等判断

    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

     

     

  • 相关阅读:
    Javascript里的那些距离们
    Javascript Date类常用方法详解
    JQuery学习笔记
    淘宝、百度、网易、搜狐前端开发面试题集锦 及 答案 【陈旧,不宜再看】
    javascript 注意事项
    jQuery对象和javascript对象互换
    那些 Android 程序员必会的视图优化策略
    那些 Android 程序员必会的视图优化策略
    mysql explain用法
    Laravel如何与App交互(针对get与post)
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/9035428.html
Copyright © 2011-2022 走看看