JS 里的数据类型转换

2019-02-12  本文已影响0人  陈夏天0527

一、类型转换

    1.转换成String

        方法一:toString()  如图一:

图一

         方法二:x + ''  如图二:

图二

            方法三: window.String(x)  如图三:

图三

            对于null和undefined,用方法一会报错,用方法二、三不会报错(图四):

图四

        2.转换成Boolean

             方法一:Boolean(x)  如图五:

图五

              方法二:!!x (两次取反,如图六):

图六

                另外需要记住以下五个falsey值(图七):数字0、NaN、''(空字符串)、null、undefined

图七

          3.转换成Number

                    方法一:Number(x)  如图八:

图八

                     方法二:parseInt(x, 10)  如图九:

图九

                     方法三:parseFloat(x)   +x如图十:

图十

                     方法四:x - 0   如图十一:

图十一

                        方法五:+x  如图十二:

图十二

二、内存图解

        首先简单介绍一下内存和外存的区别。内存一旦断电则所有东西都消失了;外存不论是否断电东西都存着,但其运行速度较慢,目前市面上的SSD运行速度能接近内存,另外还有机械硬盘。

        开机时,电脑会把外存的东西读到内存上。关于内存的分配大致如下:

        操作系统开机占用 512MB

        浏览器如Chrome 打开大概占用 1G 内存

        浏览器各每个网页分配一定数量的内存

        每个页面内存要分给页面渲染器、网络模块、浏览器外壳和 JS 引擎(V8引擎)

        JS 引擎将内存分为代码区和数据区

        数据区分为 Stack(栈内存) 和 Heap(堆内存)

        简单类型的数据直接存在 Stack 里

        复杂类型的数据是把 Heap 地址存在 Stack 里

        关于内存的几个面试题:

            注意遇到问题画图即可。

        1. 

                答案:

         2.

                答案:

         3.

                 答案(注意与题2对比):

         4.

                答案:

三、垃圾回收

若一个对象没有被引用就是垃圾,将会被回收。

正常情况下若关闭浏览器则Heap中的东西就会变成垃圾被浏览器回收,但是IE6有bug,它仍然认为这些东西不是垃圾,于是就会导致垃圾越来越多,内存不能被重新利用,导致内存泄露。

破解方法:

例:


把事件对象清空

四、关于深拷贝与浅拷贝

        对于简单类型的数据来说,赋值就是深拷贝。

        对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。

        浅拷贝例子:

b变了,a也变了

        深拷贝就是对 Heap 内存进行完全的拷贝。

上一篇下一篇

猜你喜欢

热点阅读