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

JS 里的数据类型转换

作者: 饥人谷_丁健 | 来源:发表于2019-06-03 22:53 被阅读0次

任意类型转换成string类型

方法一:String(数据类型) 在window下使用,原型是window.String(数据类型)

var n=1
string(1)//"1"
var n=true
string(true)//"true"
var n=null
string(null)//"null"
var n=undefind
string(undefind)//"undefind"
var n=({})
string({})//"[object object]"

注意:不同数据类型之间进行相加,其结果也是不一样。如1+'1'=?,由于加号总会尝试对一些相同的类型进行相加,所以它会优先将左边的1变成字符串'1'等价于(1).toString(),最后结果是字符串'11'

1+'1'//结果是字符串”11"
2+true//结果是3 (true的结果是1,flase的结果是0)
String(数据类型)

方法二:数据类型+.toString()(适用于新手)
1.numberbooleanstring类型

//数字转字符串
var n=1
n.toString()//"1"
//布尔转字符串
var n=true
n.toString()//"true"

2.nullundefinedstring类型,会出现报错情况

//null转字符串
var n=null
n.toString()//Uncaught TypeError: Cannot read property 'toString' of null
//undefined转字符串
var n=undefined
n.toString()//Uncaught TypeError: Cannot read property 'toString' of undefined

3.object转换string,其结果为"[object,Object]",这不是我们想要的结果

//object转字符串
var object={name:'pig'}
object.toString//"[object,Object]"
数据类型+.toString()

方法三:数据类型+‘ ’ (适用于老手)

var n=1
1+' '//"1"
var n=true
true+' '//"true"
数据类型+‘ ’

注意:方法二和方法一两者的结果都是一样的,方法二使用更加快捷。

任意类型转number类型

方法一:Number('1')===1

Number('1')//1
Number('01')//1
Number('-1')//1
Number(false)//0  布尔类型false转数字类型
Number(true)//1  布尔类型true转数字类型
Number(null)//0   null类型转数字类型
Number(undefined)//NaN undefined类型转数字类型

方法二:parseInt('1',10)===1 10表示十进制,parseInt中必须写明是多少进制

parseInt('011')//11 因为ES历史升级原因,这里0开头不是表示8进制
parseInt('011',8)//9  8进制
parseInt('011',10)//11 十进制
parseInt('s')//NaN 如果不是数字就会出现一些奇怪的结果
parseInt('1s')//1 parse数字,直到不是遇到不是数字为止
parseInt('1s11')//1 parse数字,遇到不是数字就会中断,后面还有数字将不会解析

方法三:parseFloat('1.23')===1.23 前面的parseInt表示取是整数,parseFloat表示取的是浮点数

  parseInt('1.23',10)//1 十进制
  parseFloat('1.23',10)//1.23 十进制

方法四:'1' - 0===1 (字符串减零) 字符串通过减零的方法也可以转换成number类型

'1'-0//1
'-1'-0//-1

方法五:+ ‘1’===1 (字符串取正) 字符串通过取正方法同样可以转换成number类型

+'1'//1
+'-1'//-1
-'-1'//1 负负得正,结果为1
-(-'-1')//1 这种情况不能用--‘-1’代替,减减代表是另外一种意思,如果非要用就要用括号围起来。

任意类型转boolean类型

方法一:Boolean(数据类型) (适用于新手)

Boolean(1)//true 
Boolean(-1)//true
Boolean([])//true
Boolean({})//true
Boolean(' ')//true 空格字符串
Boolean(0)//false
Boolean(NaN)//false
Boolean('')//false 空字符串
Boolean(null)//false
Boolean(undefined)//false 

注意:boolean数据类型中的false值只有5个:0;NaN;'';null;undefined;特别要注意上述中''是表示空字符串,但是对于' '空格字符串却是true值,对于其他的值都是true,如空数组、空对象等。
方法二:!!数据类型(适用于老手)
!true===false,!!true===true上述例子说明用任何东西给他取反两次就会得到一个boolean类型,其结果和方法一同样。

内存图

内存就是暂时存储程序以及数据的地方,内存一旦断电,里面存储的数据就会被清空。外存(硬盘)存储数据,断电情况下数据就不会掉失。目前市场上最快的外存是SSD,它目前运行速度是比较接近内存,但是相对同样是外存的机械硬盘来说就贵了一点。机械硬盘运行速度比较慢,容易坏,SSD不容易坏,但是坏了一点点就全盘坏。


内存

注意:举例说明一下电脑内存分配和使用,2G的内存,打开电脑运行操作系统需要512M内存,打开google浏览器约1G内存,其中页面1约100M(html+css:20M;JS:最大100M;网络:HTTP:20M;其他:插件、定时器),页面2约100M........

JS内存图片

JS内存图

注意:JS 引擎将内存分为代码区和数据区,我们只研究数据区。

数据区分为两个内存区:stack(栈内存)和Heap(堆内存)

简单类型与复杂类型存放的区别
内存

注意:简单类型的数据直接存在 Stack 里
复杂类型的数据是把 Heap 地址存在 Stack 里遇到问题就画图,不要分析。

内存图面试题

(1)题目一


题目一

因为a的值一直没有变,只有b的值发生变化,由图可知a={name:'a'}
(2)题目二

题目二
a的值没有变化,因此a=1
(3)题目三
题目三
注意:等号只做一件事就是将右边赋值给左边,所以a.name=a
(4)题目四
题目四
上图中a和b的地址都没有改变,只是地址的内容发生了变化,所以a.name='b'

浏览器垃圾回收

如果一个对象没有被引用,那么它就是垃圾,将被浏览器回收,节省内存,回收时间不定。

垃圾回收
垃圾回收
注意:上图例子2,在执行步骤3之后function(){}不会回收,从图可知它还是有引用在。如果将document.body.onclick=null,那么function将没有被引用,正常浏览器都通常认定它就是垃圾将被回收,但是IE浏览器不这样认为,所以IE中不将整个浏览器关闭,就会导致像body→onclick→function这样的垃圾越来越多,这就是所谓的内存泄露。解决方法:window.onunload=function(){document.body.onclick=null}将所以监听事件变成null(如果有100个监听,同样要加上100个null

深拷贝和浅拷贝

1.b的值变不影响a的值,这就是深拷贝,简单的数据类型赋值就是深拷贝。

var a=1
var b=a
b=2 
a=1

2.b的值变导致a的值也变,这就是浅拷贝,复杂类型涉及比较多浅拷贝。

var a={name:'a'}
var b=a
b.name='b'
a.name='b'

相关文章

  • 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/bcqkxctx.html