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

JS 里的数据类型转换

作者: 陈夏天0527 | 来源:发表于2019-02-12 00:43 被阅读0次

    一、类型转换

        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 内存进行完全的拷贝。

    相关文章

      网友评论

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

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