详解JavaScript中的类型判断与类型转换

 更新时间:2023年07月31日 10:04:05   作者:布鲁斯要蓝调  
这篇文章主要给大家讲解一下JavaScript中的类型判断与类型转换的基本概念和使用方法,对我们的学习JavaScript的类型判断与转换有一定的帮助,需要的朋友可以参考下

类型判断

  • typeof:只能判断原始类型,并且判断null的时候会判断出null为'object';使用typeof判断 引用类型时:只能判断出function

  • Object.prototype.toString(): 因为区别对象、数组、函数单纯使用 typeof 只能判断为object对象,但是可以通过Object.prototype.toString方法,判断某个对象值属于哪种内置类型。 例:[object String] 1).如果this值是undefined,就会返回 [object Undefined] 2).如果this值是null,就会返回 [object Null] 3).生成变量 o,让 o 成为ToObject(this)的结果 4).让class成为 o 的内部属性[[class]]的值 5).最后返回由"[object 和 class 和 "]" 三个部分组成的字符串

例: console.log(Object.prototype.toString.call(new Date())); //[object Date]

  • 数组身上的判断方法:Array.isArray()

Array.isArray()方法用来判断某个方法是否是数组并且返回一个布尔值

  • instanceof:只能判断引用类型,不能判断原始类型,它是顺着原型链找的 ;但是数组也是属于Object 也可以判断出它是Object;instanceof用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

类型转换

对象转原始类型

js的类型转换只有三种类型的转换: to string, to boolean, to number

转number

调用 ToPrimitive (obj,Number)

  • 如果obj是基本类型,直接返回
  • 否则,调用ValueOf方法,如果得到一个原始类型.则返回
  • 否则,调用toString方法,如果得到一个原始类型.则返回
  • 否则报错 []==![] Number({})//NaN

转string

调用ToPrimitive (obj,String)

  • 如果obj是基本类型,直接返回
  • 否则,调用toString方法,如果得到一个原始类型.则返回
  • 否则,调用ValueOf方法,如果得到一个原始类型.则返回
  • 否则报错

隐式转换

一元操作符 : +'1'=>Number(1)=1 '+'会触发Number()

当+运算作为一元操作符时,会调用ToString()处理该值

二元操作符

v1+v2

  • lprim=ToPrimitive(v1)
  • rprim=ToPrimitive(v2)
  • 如果lprim或rprim是字符串,那么返回 ToString(lprim)和ToString(rprim)的拼接结果
  • 否则返回ToNumber(lprim)和否则ToNumber(rprim)的相加结果

==

当执行 x == y 时,

  • 如果x和y是同一类型,

    如果x是undefined,返回true

    如果x是null,返回true

    x是数字 x是NaN,返回false

    如果x和y指向同一个对象,返回true,否则返回fasle

  • 特例: null == undefined //true

  • 1 == 'h' 会先ToNumber('h')再判断

  • false == '1' 会先ToNumber('false') ToNumber('1')

  • true == {a:1} // ToPrimitive({a:1})

[] == ![]

!运算符优先级更高 先执行![] !为布尔 ![]为false []==false 然后有==将这两个向Number靠近 []为引用类型,调用ToPrimitive() 然后先调用valueOf()没有 再调用toString()转换成'' ''再转换成0 false转换成0 所以[] == ![]

到此这篇关于详解JavaScript中的类型判断与类型转换的文章就介绍到这了,更多相关JavaScript类型判断与转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS实现小米轮播图

    JS实现小米轮播图

    这篇文章主要为大家详细介绍了JS实现小米轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 一起来学习JavaScript的BOM操作

    一起来学习JavaScript的BOM操作

    这篇文章主要为大家详细介绍了JavaScript BOM操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • JavaScript实现复制文章自动添加版权

    JavaScript实现复制文章自动添加版权

    自己辛辛苦苦写的文章,轻易就被别人复制-粘贴去了,是不是很伤心呢?小编今天给大家整理了两个方法,让别人复制自己的文章时,自动在文章的结尾添加自己的版权信息。
    2016-08-08
  • 微信小程序自定义模态框

    微信小程序自定义模态框

    这篇文章主要为大家详细介绍了微信小程序自定义模态框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • js获取客户端外网ip的简单实例

    js获取客户端外网ip的简单实例

    这篇文章主要介绍了js获取客户端外网ip的简单实例,有需要的朋友可以参考一下
    2013-11-11
  • javascript使用canvas实现饼状图效果

    javascript使用canvas实现饼状图效果

    这篇文章主要为大家详细介绍了javascript使用canvas实现饼状图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • webpack实用小功能介绍

    webpack实用小功能介绍

    这篇文章主要介绍了webpack实用小功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • typescript+react实现移动端和PC端简单拖拽效果

    typescript+react实现移动端和PC端简单拖拽效果

    这篇文章主要为大家详细介绍了typescript+react实现移动端和PC端简单拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • javascript addLoadEvent函数说明

    javascript addLoadEvent函数说明

    网页加载完整后会触发一个onload事件,默认地一个事件只能和一个函数绑定。
    2010-01-01
  • JS URL传中文参数引发的乱码问题

    JS URL传中文参数引发的乱码问题

    今天的项目中碰到了一个乱码问题,从JS里传URL到服务器,URL中有中文参数,服务器里读出的中文参数来的全是“?”,查了网上JS编码相关资料得以解决。
    2009-09-09

最新评论