美文网首页学习嘿
JS 里的数据类型转换

JS 里的数据类型转换

作者: 饥人谷_ika0s | 来源:发表于2019-08-22 21:30 被阅读0次

强制类型转换

使用parseInt()parseFloat()Number()Boolean()String()toString()进行数据类型转换

Number()

参数 结果
undefined NaN
null 0
布尔值 true转换为1,false转为0
数字 不转换,返回数字
字符串 字符串只包含数字(包括正负号),转为10进制数,字符串为空,转为0,字符串中包含非数字字符,转为 NaN

String()

参数 结果
undefined ’undefined‘
null ’null‘
布尔值 转换为'true' 或 'false'
数字 数字转换字符串,比如:1.765转为'1.765'
字符串 无须转换

PS:String() 能够将任何类型的值转换为字符串,不知道要转换的值是不是 null 或 undefined 的情况下,使用String() ,而toString()不能转化undefined和null,因为两者没有该方法,会报错。,
引用类型中,数组的toString()是把每个数组的元素以,分割的字符串的形式返回的,
其余的返回[object type],其中type是对象的类型

Boolean()

5个falsy值
除了这五个falsy值:''(空字符串)、0、NaN、undefined、null的,其他的值为true

隐式类型转换

四则运算符

+操作符

一元+:对非数值进行 Number() 转换;

二元+:

  • +号两边只要其中一个是String类型,就将另一个也转为String进行拼接
  • 两边都不是String类型,则对非数值进行 Number() 转化
1 + 'true'//’1true‘

1 + true//'2'

1 + null//1 1+0=1

1 + undefined//NaN 1+NaN=NaN

其余操作符只要其中一个是Number类型,就将另一个也转为Number进行计算

关系运算符

关系运算符会把其他数据类型转化为Number再比较关系

<、>、<=、>=运算符

  • 有一边是字符串,对字符串使用Number()转成数字后进行比较
  • 两边都是字符串,比较两个字符串对应的unicode编码值
//单字符比较
'9'>'50'//true  '9'.charCodeAt(0)=57,'50'.charCodeAt(0)=53

//多字符比较
'abc'>'b'//false 从左到右依次比较,先比较'a'和'b' 'a'.charCodeAt(0)=97,'b'.charCodeAt(0)=98

== 运算符

比较相等性之前,不能将null和undefined转换成其他任何值。就是undefined和null与其他数在进行相等判断时不进行类型转换。null == undefined //true

类型相同时,没有类型转换,注意NaN不与任何值相等,包括自身。NaN !== NaN。

不同数据类型的转换按下图方式进行转换

不同数据类型的转换步骤
对象转换为基本类型
  • 先查找对象的valueOf方法,(Date对象是先查找toString)如果有且返回基本类型值,则使用该值
  • 如果没有就使用 toString 方法的返回值(如果存在)来进行强制类型转换

一些例子:

[]==[]//false,比较的是内存中的地址
[] == ![]//true,根据运算符优先级,!优先级大于==,先执行![],“!” 为逻辑非,在操作非布尔值类型的数据时,会将该数据类型先转换为布尔值后再取反,而Boolean([])返回true,所以表达式相当于[]==false,false转数值为0,[]先调用valueOf方法,返回this,不是原始值,继续调用toString方法, [].toString() = ''。''调用Number方法,转为数字0。0==0,返回true
{}=!{}//false,左边 ({}.toString())返回'[Object Object]',调用Number方法,返回NaN
[null] == 0//true,[null].toString() = '', Number('')=0
[null] == false//true
null == 0//false, null不进行类型转换
[undefined] == false //true,[undefined].toString() = ''Number('')=0
[null]==[]//false 两个数组比较
[undefined] == [] //false,两个数组比较,比较索引是否相同

相关文章

  • JS 里的数据类型转换

    JS 里的数据类型转换 Js中的数据类型一共有7种,即number,string,boolean,underfin...

  • 2、强制数据类型转换

    数据类型转换: 在js中,数据类型的转换有两种,分别是自动转换和强制转换 自动转换: 自动转换是用JS进行某些操作...

  • JS里的数据类型转换

    上一篇文章(JS里的数据类型)介绍了js中的数据类型。这篇主要介绍数据类型转换。 一、任意类型转字符串 转换成st...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

  • JavaScript的显式转换和隐式转换

    js的显式转换和隐式转换都是数据类型的转换;js的数据类型是弱类型的,即可以给变量赋值为任意的数据类型,当进行运算...

  • javaScript中数据类型转换方法

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • JS隐式数据类型转换

    隐式数据类型转换介绍 前面有总结过 JS数据类型转换 Number(), toString(), parseInt...

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • JS 里的数据类型转换

    JS 里的数据类型转换 某类型转换为字符串的方法eg.var a=4 用 变量.toString()方法,a.to...

网友评论

    本文标题:JS 里的数据类型转换

    本文链接:https://www.haomeiwen.com/subject/rgaosctx.html