javascript 简单、繁杂类型、栈、堆笔记

简单数据类型

    值类型:在存储变量中的是值本身
    简单数据类型 null返回的是空的对象
    string,number,Boolean,undefined,null

繁杂数据类型

    引用类型:在存储变量中仅仅是地址,因此叫做引用数据类型
 通过new关键字创建的对象(系统对象,自定义对象)



    栈、堆

    栈:由操作系统分配释放存放函数的参数值,局部变量的值等。其他操作方式类似于数据结构中的栈
    简单数据类型存放到栈里面 里面之间开辟空间存值
    堆:存储繁杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
    繁杂数据类型存放到堆里面 首先在栈里面存放地址 16进制 地址指向堆里面的数据



    简单类型传参
    函数的形参可以看做是一个变量,当我们把一个值类型的变量做为参数传给函数形参的时候,其实就是把变量在栈空间里面的值复制了一份给形参,那么在方法内部对形参做任何修改都不会影响外部的变量

 

    繁杂类型传参
    函数的形参可以看做是一个变量,当前面把引用类型变量传给形参的时候,其实就是把变量在栈空间保存的堆地址复制给了形参,形参和实参保存的是同一个堆地址,所以操作的是同一个对象
 
    // 简单类型传参
    function fn(a) {
        a++;
        console.log(a);
    }
    var x = 10;
    fn(x)
    console.log(x);



    // 繁杂类型传参
    function Person(name) {
        this.name = name;
    }

    function fn1(x) {
        console.log(x.name);
        x.name = '张学友'
        console.log(x.name);

    }
    var p = new Person("刘德华")
    console.log(p.name);
    fn1(p)
    console.log(p.name);

 

 
posted @ 2020-03-27 11:10  徐12  阅读(123)  评论(0编辑  收藏  举报