美文网首页
第4章: 变量、作用域和内存问题

第4章: 变量、作用域和内存问题

作者: 前端大镖客_ | 来源:发表于2020-08-06 13:48 被阅读0次
    我是石灰

    4.1 基本类型和引用类型的值

    区别:
    基本类型传递的是值, 操作的也是值本身.
    引用类型传递是对象的引用(也叫地址 是16进制), 访问的也是引用. javascript不允许直接访问内存中的位置

    基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中;
    对象存储在堆内存中, 对象的引用存储在栈内存中.

    4.1.3 传递参数

    ECMAScript中所有函数的参数都是按值传递的.

    function setName(obj){
      obj.name = "Nicholas";
      obj = new Object();
      obj.name = "Gery"
    }
    const person = new Object();
    setName(person);
    console.log(persomn.name); // "Nicholas"
    

    局部对象/变量会在函数执行完毕后立即被销毁

    4.1.4 检测类型

    要检测一个变量是不是基本数据类型, typeof操作符是最佳的工具. 检测引用类型的值时, ECMAScript提供了instanceof操作符
    因此,在检测一个引用类型值和Object构造函数时,instanceof操作符始终返回true,当然.如果使用instanceof操作符检测基本类型值时, 始终返回false,因为基本类型不是对象

    4.2 执行环境及作用域

    延长作用域链的方法:
    1、try catch语句的catch块
    2、with语句

    4.2.2 没有块级作用域
    使用var声明的变量会自动被添加到最接近的环境中.在函数内部, 最接近的环境就是函数的局部环境, 在with语句中,最接近的环境是函数环境.如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境.

    4.3 垃圾收集

    • 标记清除
    • 引用计数
    • 性能问题
    • 管理内存
      javascript 是一门具有自动垃圾收集机制的编程语言.

    相关文章

      网友评论

          本文标题:第4章: 变量、作用域和内存问题

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