上次我总结了js几大数据类型,现在我要写一篇这七大类型相互转换的文章。
1.Number
共计有三中吧正规方式,如图:
当然,我们一般不用这几招,我们的方法是:
第一种:var a = "1"; a = a-0;第二种:var a = "1"; a = -a;
一个减零,或者直接加上正负号,轻松搞定
2.String
对字符串,主要方法如图:
跟数字一样,我们有一般正常方法:
即变量之后加上""或者''
3.Boolean
首先也可以用默认方法,即Boolean(a),不过看了这么多的你应该也知道,我们有更好的,没错,如图:
这里再强调一遍六大类型转boolean为false,他们分别是:0;""或'';null;undefined;NaN;false
对于null,undefined,smybol,我们一般没这么闲去转化他,所以不说也罢。
4.object
如果不用jq的方法,无论js的浏览器私有方法和es目前规定的function,好像都没有办法轻易转化。
你或许会说,你这是瞎说,明明toString()方法还能用,没错,但是转换的结果往往不是你想要的。
这里就必须说一下js在内存中的存储方式了。当声明一个变量后,js所用的内存就会在内存中开辟一个空间,所谓的栈内存(stack),变量进栈以后,就会以键值对的形式存储下来,但是注意,这只是简单类型的,当遇上复杂类型时,就跟上次我解释的一样,他就会把要存的东西打成一个包,然后放在另一个空间中,也就是所谓的堆内存(heap)。然后给包裹打上一个标签,也就是所谓的地址值,把地址值返回给变量,所以变量所对应的不是他的对象本身,而只是一个地址值,每当我需要用他的方法了,他就会去找这个地址值所对应的包裹,进行相关操作。
这里再加一个深拷贝知识:
对于简单类型的数据来说,赋值就是深拷贝。
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。