码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【JS】JavaScript入门笔记第七弹之JS简单类型与复杂类型~


    💭💭:

     
    🎬:今天更新js的第七部分!JS简单类型与复杂类型
     
    💟:更新JavaScript这部分的内容,也是我整理笔记整理思路的过程,更是对此内容的一次巩固,如有不足或者错误,还请多多指教哈哈😆😆
     
    ☂️:每天进步一点,收获一点,向着好的方向去走,希望我们都可以成为更好的自己💜💜💜
     

    前期回顾:JavaScript入门笔记第一弹~
         JavaScript入门笔记第二弹~
         JavaScript入门笔记第三弹~
         JavaScript入门笔记第四弹之函数、作用域~
         JavaScript入门笔记第五弹之预解析、对象~
         JavaScript入门笔记第六弹之JS简单类型与复杂类型~

    JavaScript

        • 一、JS简单类型与复杂类型
          • 1.1.简单类型与复杂类型
          • 1.2.堆和栈
          • 1.3.简单类型的内存分配
          • 1.4.复杂类型的内存分配
          • 1.5.简单类型传参
          • 1.6.复杂类型传参

    一、JS简单类型与复杂类型

    1.1.简单类型与复杂类型

    💡💡

    简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。

    • 值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
      string ,number,boolean,undefined,null
    • 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型
      通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
    1.2.堆和栈

    💡💡
    堆栈空间分配区别:
     
      1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;
    简单数据类型存放到栈里面
      2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
    复杂数据类型存放到堆里面

     

    1.3.简单类型的内存分配

    值类型(简单数据类型): string ,number,boolean,undefined,null
    值类型变量的数据直接存放在变量(栈空间)中
     
    💡💡

    • 简单数据类型 null 返回的是一个空的对象
    • 简单数据类型是存放在栈里面 里面直接开辟一个空间存放的是值
    var timer = null;
    console.log(typeof timer);
    
    • 1
    • 2

     
    如果有个变量我们以后打算存储为对象,暂时没想好放啥, 这个时候就给 null
     

    1.4.复杂类型的内存分配

     
    💡💡
    引用类型(复杂数据类型):通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
    引用类型变量(栈空间)里存放的是地址,真正的对象实例存放在堆空间中
     

    复杂数据类型 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据

    1.5.简单类型传参

    💡💡

    • 函数的形参也可以看做是一个变量,
    • 当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里的值复制了一份给形参,
    • 那么在方法内部对形参做任何修改,都不会影响到的外部变量。
       
      例子:
     // 简单数据类型传参
            function fn(a) {
                a++;
                console.log(a);
            }
            var x = 10;
            fn(x);
            console.log(x);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.6.复杂类型传参

    💡💡

    • 函数的形参也可以看做是一个变量,
    • 当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,
    • 形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。
       
      例子:
    // 复杂数据类型传参
            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. 这个输出什么 ?   张学友
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

     
    到此已经基本更新完毕,后面学习到会有补充💜💜

  • 相关阅读:
    nodejs+vue购物网站设计系统-计算机毕业设计
    MybatisPlus的操作
    MySQL备份与恢复
    JavaScript构造函数和原型:ES5 中的新增方法
    【Java毕设】基于SpringBoot实现新冠疫情统计系统(Idea+Navicat)
    Java网络编程
    5分钟看明白rust mod use
    人体神经元与胶质关系图,神经元和神经胶质关系
    目标检测算法——YOLOv5/YOLOv7改进之结合NAMAttention
    龙蜥开发者说:海纳百川,有容乃大,我在龙蜥社区的升级之旅 | 第 11 期
  • 原文地址:https://blog.csdn.net/m0_62159662/article/details/126842697
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号