前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类型转换的判定方式

类型转换的判定方式

作者头像
欲休
发布2018-03-15 11:59:07
7960
发布2018-03-15 11:59:07
举报
文章被收录于专栏:前端杂货铺前端杂货铺

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

代码语言:javascript
复制
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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档