• == 和 ===


      Object 的 valueOf 方法

      valueOf()函数返回指定对象的原始值。

      JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同。

      

      Object 的 toString() 方法

      toString()函数的返回值为String类型。返回当前对象的字符串形式。

      JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。

      

      "==" 与 "===" 

      "===" 和 "==" 都是用来比较两个值是否相等。前者称为严格相等运算符,判断是否严格相等;后者称为相等运算符,判断是否相等,这个是允许类型转换的。

      "===" 这个判断比较简单

    1.   如果数据类型不一样则不相等
    2.   如果是引用类型,除非指向同一个数组、对象这样的,那么相等,其他都不相等
    3.   其他比较就是常规的比较了

      "==" 这个比较复杂

      如果都是引用类型,或者同是基本类型,同"==="

      null 和 undefined 相等

    1.   一个是数字,另一个字符串,字符串转换为数字后比较
    2.   含有一个boolean值,先将其转换为数字后比较
    3.   其中一个值是对象,将其转换为原始值进行比较(字符串或者数字,根据情况来转换)。

      对象转换为原始值

      对象转换为boolean比较简单,都是为true

      对象转换为数字,先调用valueOf方法,如果为原始值,转换为数字(需要的话);不成功则调用toString()方法,如果为原始值,转换为数字(需要的话),也不成功就抛出异常

      对象转换为字符串,同样的,先调用toString()方法,如果为原始值,转换为字符串(需要的话);不成功则调用valueOf()方法,,如果为原始值,转换为字符串(需要的话),也不成功就抛出异常

      转换的时候到底转换为数字还是字符串,这个看情况需要。

      举几个例子

    new Date() + 1
    //"Tue Aug 11 2015 23:35:47 GMT+0800 (中国标准时间)1"
    //+ 期望前面的值是一个字符串,调用的Date的toString()方法
    +new Date() //1439307361984
    //+ 期望后面的值是一个数字,调用的Date的valueOf()方法处理

      举几个"=="的例子

    [] == ![]
    //第一步:![] 转换为boolean值为false
    //第二步:false  转换为数字为 0
    //第三步:[] 转换为数字为 0 
    //判断为true ,第二步和第三步谁先都没有关系
    
    "1" == true
    // true 转换为 1
    // "1" 转换为 1
    
    "1,2" == [1,2]
    // [1,2] 转换为字符串 "1,2"
  • 相关阅读:
    redis之windows安装
    ubuntu安装 ssh
    less乱码ESC显示问题
    linux 命令/目录 名称 英文单词 缩写 助记
    设计模式-策略模式
    设计模式-责任链模式
    ApplicationContexAware的作用
    ApplicationEvent事件机制
    mybatis注解版延迟加载、立即加载、一级缓存、二级缓存
    mybatis xml版延迟加载、立即加载、一级缓存、二级缓存
  • 原文地址:https://www.cnblogs.com/ximuncu/p/4722818.html
Copyright © 2020-2023  润新知