• 9_1:概念:简单数据类型 + 复杂数据类型


    知识梳理

    简单类型与复杂类型
    堆和栈
    简单类型的内存分配
    复杂类型的内存分配
    简单类型传参
    复杂类型传参

    一 数据类型分类

    1)基本概念

    //1 简单数据类型:也称 值类型 又称 基本数据类型
    string number Boolean undefined null
    null 返回的是对象比较特殊
    //2 复杂数据类型:也称 引用类型
    在存储变量时存储的仅仅是地址(引用),因此叫做引用数据类型
    通过new关键字创建的对象(系统对象 自定义对象)如 Object Array Date等

    2)两者区别

    //基本类型
    1. 基本类型变量存放在栈内存里(Stack)
    2. 基本类型的值是按值访问的
    3. 基本类型的值是不可变的
    4. 基本类型的比较是指的比较
    
    //引用类型
    1. 引用类型的值 存放在堆内存(Heap)中的对象(Object)里
    2. 引用类型的值是按引用访问的
    3. 引用类型的值是可变的
    4. 引用类型的比较是引用的比较

    二 两者的内存分配机制

    //1 值类型:存放在栈里面,直接开辟空间存放变量的值
    
    //2 引用类型:首先在栈里面存放索引地址,让后这个地址指向堆里面的数据

    三 两者的参数传递

    1)简单类型传参

    function fun(a){
        a++;
        console.log(a);
    }
    var x = 10;
    fun(x);//输出11
    console.log(x);//输出10
    
    简单类型:把自己的值 复制一份给了形参
    在函数内部修改形参变量 不影响原来的变量本身

    2) 复杂类型传参

    function Person(name) {
        this.name = name;
    }
    function f1(x) { //x = p
        console.log(x.name + '2');//刘德华
        x.name = '张学友';
        console.log(x.name + '3');//输出张学友
    }
    var p = new Person('刘德华');
    console.log(p.name + '1');//输出:刘德华
    f1(p);
    console.log(p.name + '4');//输出:张学友
    
    把变量在栈空间里的堆地址 复制给了形参
    形参和实参起其实保存的是同一个堆地址,操作的是同一个对象
    = PHP中的引用传参

    f1(p);   x = p ( 他们最后都指向了堆里面的数据 )

    堆和栈的概念 

    内存空间里面分为两种 栈内存空间 和 堆内存空间
  • 相关阅读:
    在安卓上用Termux安装sqlmap
    地址转换函数
    字节操作函数
    主机字节序和网络字节序
    20191231 Spring官方文档(Core 1.13-1.14)
    20191230 Spring官方文档(Core 1.12)
    20191230 Tomcat权威指南-读书摘要系列【归档】
    20191230 On Java8【归档】
    20191227 Java8 日期时间API
    20191226 Spring官方文档(Core 1.11)
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14420041.html
Copyright © 2020-2023  润新知