美文网首页
类型转换

类型转换

作者: lyp82nkl | 来源:发表于2019-06-13 01:28 被阅读0次

    任意类型转字符串

    1. String(x)
    • 这是一个全局函数,可以在全局调用:window.String()


    1. x.toString()


    • null和undefined不具有toString()方法
    1. x + ''(加号如果发现左右任意一边有字符串,他就会把另一边也变为字符串)


    关于1+’1’为什么等于字符串’11’的解释:
    加号运算,由于加号只能加相同类型的东西,所以他会尝试改变这个类型,优先会尝试把他变成字符串就相当于:(1).toString() +’1’,所以就是’11’

    任意类型转数字
    • Number(x)

    • parseInt(x, 10)

    • parseFloat(x)

    • x - 0

    • +x

    任意类型转布尔
    • Boolean(x)

    • !!x(取反再取反,也就是负负得正,等于他本身的布尔值了)

    • js里面只有五个falsy(falsy是在 Boolean 上下文中认定可转换为false的值)值:

    false, 0, NaN, null, undefined, ’’(空字符串)

    除了五个falsey值外,所有的object都是true,其他的都是true

    内存图

    • 外存:断电也不会清空内容,速度慢。最快的外存SSD,市面常见的是机械硬盘(易坏)

    • 内存:1G、2G~16G

    • 特点:一旦断电,东西全空;速度快

    • Js工作分配内存,主要划分为两个大区:代码区(左边),数据区(右边);
      数据区又分为stack栈内存和heap堆内存。


    数据区里的值:

    1. 简单(number/string/undefined/symbal/null/bolean) 存在stack栈内存里

    2. 复杂(Object类型) 存heap地址存入stack

    简单类型又叫基本类型;复杂类型又叫引用类型。

    引用:


    注意:
    1. 等于号只做一件事情,就是把右边的东西存到左边来;
    2. Heap里面的内容只能添加不能直接更改

    浅拷贝和深拷贝

    深拷贝

    var a = 1;
    
    var b =a;
    
    b = 2;
    
    a = 1
    
    • 上面的代码当变量b变得时候不会影响a,这就属于深拷贝

    基本类型的赋值就是深拷贝

    浅拷贝

    var a= {
    name: ‘a’
    }
    var b = a;
    b.name = ‘b’;
    a.name = ? //结果也是’b’
    

    b变导致a变这就属于浅拷贝

    相关文章

      网友评论

          本文标题:类型转换

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