当前位置: 首页 > article >正文

十一、JavaScript简单数据类型和复杂数据类型

一、简单类型与复杂类型

在这里插入图片描述

        // 简单数据类型  null  返回的是一个空的对象  object
        var timer = null;
        console.log(typeof timer);  // object
        // 如果有个变量我们以后打算存储为对象,暂时没想好放啥,这个时候就给 null

二、堆和栈

在这里插入图片描述

三、复杂类型的内存分配

1.简单数据类型 是存放在栈里面 里面直接开辟一个空间存放的是值
2.复杂数据类型 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据
在这里插入图片描述

四、简单类型传参

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

        function fn(a) {
            a++;
            console.log(a);  // 11
        }
        var x = 10;
        fn(x);
        console.log(x);  // 10

五、复杂类型传参

函数的形参也可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。

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

        function f1(x) {
            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. 张学友

http://www.kler.cn/a/611692.html

相关文章:

  • sqlmap 源码阅读与流程分析
  • LeetCode 第36、37题(数独问题)
  • Linux安装Ipanel
  • 反向 SSH 隧道技术实现内网穿透
  • Golang io模块详细功能介绍与示例
  • 数据大屏点亮工业互联网的智慧之眼
  • linux网络编程以及epoll IO多路复用
  • 计算机网络基础:量子通信技术在网络中的应用前景
  • 解决Cubemx生产的 .ioc文件不能外部打开的方法
  • Vulhub靶机--FAll
  • 数据湖的崛起:从大数据到智能未来的钥匙
  • CMake入门及生成windows下的项目示例讲解
  • Postman 请求头详解:快速掌握
  • flutter 获取设备的唯一标识
  • 国产 FPGA 的崛起之路,能否打破 Xilinx 的垄断?
  • nodejs-原型污染链
  • 基于核选择融合注意力机制TCN-MTLATTENTION-MAMBA模型(Python\matlab代码)
  • 【点盾云】加密技术如何防止视频内容随意传播?
  • Windows卸载以压缩包形式安装的MySQL
  • qt+opengl 加载三维obj文件