专栏首页前端杂货铺类型转换的判定方式

类型转换的判定方式

对于“==”,我们肯定不陌生,但是背后的判定机制我们可能不是很熟悉,我现在先举一些例子,最后再总结一下大概的方法:

null == undefined  // true

 1 == true //
     
 NaN == NaN //false
 
 '123' == 123 //true Number('123') == 123
 
  '' == 0 // true
 
  '123' == {valueOf: function(){return '123'}} // true
 
  '123' == {valueOf: function(){return 123}} // true
 
  '123' == {toString: function(){return '123'}} // true
 
  123 == {valueOf: function(){return {}}} //false

  123 == {toString:function(){return 123},valueOf: function(){return {}}}  //true;
 
  123 == {toString:function(){return 'abc'},valueOf: function(){return 123}}  //true;

  123 == {toString:function(){return '123'},valueOf: function(){return {}}} //true;

  综上来看,

  1,NaN与任何值都不相等

  2,其中一个数是boolean,则将boolean转化为数字,true为1,false为0

  3,其中一个为字符串,若另一个数为数值,则将字符串(Number(str))转化为数字;

  4,其中一个为对象,另外一个为基本类型值,

    1)调用对象的valueOf方法,若valueOf返回一个基本类型值,则比较这个基本类型的值与字符串是否相等,相等

  则返回true,不相等返回false。不会再执行toString方法进行判断。

    2)调用对象的valueOf方法,若valueOf返回一个非基本类型值(对象,函数),则在执行toString方法,与返回的基本类型值

  在进行比较。

  5,对象与对象比较,判断是不是同时指向同一个对象。

  6,null和undefined不参与转换,但是null == undefined。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 异步Promise实现

    简介    异步回调的书写往往打乱了正常流的书写方式,在ECMAScript 6中实现了标准的Promise API,旨在 解决控制回调流程的问题。   简单的...

    欲休
  • Dean-Edward的事件系统实现

    jQuery早期的事件系统,主要借鉴自Dean-Edward的事件模型。虽说早期的该事件模型也有些许bug,诸如:   1,绑定的事件及其处理程序等数据并未存储...

    欲休
  • serverless在微店node领域的探索应用

    目前微店中台团队为了满足公司大部分产品、运营以及部分后端开发人员的尝鲜和试错的需求,提供了一套基于图形化搭建的服务端接口交付方案,利用该方案及提供的系统可生成一...

    欲休
  • nodejs实现批量修改文件内容 | 附断更红包

    一番之前不是有一个网站吗,efonfihgint.imwork.net。但这是个二级域名,很多时候用起来不方便,自主性还是稍差了一点。

    efonfighting
  • 巧用校验码

    登录百度智能云 : https://cloud.baidu.com/?from=console

    小雯子打豆豆
  • 被巨头盯上,重在抉择

    孟永辉
  • 从编程小白到全栈开发:理解异步

    作为以JavaScript为主要开发语言的JS全栈开发者,是一定会碰上“异步(Asynchronous)”这个重要概念的,尽早的理解这个概念,会对你的JS编程生...

    一斤代码
  • 访问者模式

    一、简介 1、访问者模式表示一个作用于某对象结构中各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 2、模式中的成员角色 访问者(...

    用户1215536
  • windows7 共享 无法访问其他电脑

    首先,已经很明确的知道对方Win7电脑存在默认共享,已经“启用文件和打印机共享”功能,而且有访问的账号(该账号可以正常登陆操作系统):

    monster_moya
  • socket.io

    本译文来源于https://socket.io/get-started/chat/,不足之处请多批评指正。 最近在学些vuejs和websocket相关技术,...

    ccf19881030

扫码关注云+社区

领取腾讯云代金券