• js高级教程阅读笔记 第四章-变量作用域和内存问题


    本章核心

    • 理解基本类型和引用类型
    • 理解执行环境
    • 理解垃圾搜集

    基本类型和引用类型的值

    • 基本类型:简单的数据段
    • 引用类型:多个值构成的对象

    js中引用类型的值是存放在内存中的对象,但是js不允许访问内存控件,所以只能以引用的方式访问

    可以给引用对象添加(删除)新的属性和方法,但是不能用在基本类型上(尽管不会报错,但是返回值是undefined)。

    var `teacher = new object();
    teacher.name = '李';`
    var name = '李';
    name.age = 11; //不会报错,但是返回值undefined

    复制变量值

    在基本类型中,值的复制类似于创建副本

    var a = 1;
    var b = a; //这个时候虽然二者的值都为1,但是二者都是独立的1,开辟的是不同的内存空间

    但是对于引用类型就不同了,这更像是c语言中的指针。以实例来说明

    var a = new object();
    var b = a;
    a.name='zhang';
    alert(b.name);

    结果也是zhang。实际上引用类型创建的是指针,所以a复制给b实际上是把指针备份了一份给b。它们面对的都是同一个对象。

    引用可以是多引用,即一个引用类型可以new多个对象。(前提是其中有对象是在局部中)。

    检测类型

    前面提到检测基本类型的方式是使用typeof,那么对于引用类型来说就需要instanceof,语法如下

    result = var instanceof constructure ; 

    实例:

    alert( person instanceof Object)//检验person是否是object类型

    执行环境和作用域

    在web浏览器中全局执行环境被认为是window对象。(这个和宿主环境有关系)

    局部作用域定义的变量可以和全局变量交换使用。

    在运行的时候,js会形成一条作用链,作用链串起所有方法和变量。

    没有块级作用域:

    if(1){
        var a = 1;
    }
    alert(a);
    //通常在其他c类语言中{}表示了一个作用域,一旦离开即被销毁。但是js中没有这样做,a在{}中被创建就被添加到了执行环境中。

    垃圾搜集

    js采用了垃圾回收机制

  • 相关阅读:
    C++面向对象三大特性
    4G通信技术LTE介绍
    汉澳战斗檄文,跟着汉澳去战斗
    AdapterView及其子类之二:使用ListActivity及ArrayAdapter创建列表
    [置顶] Objective-C ,ios,iphone开发基础:protocol 协议(委托,代理)的声明
    C语言中几种类型所占字节数
    UART, SPI, IIC的详解及三者的区别和联系
    数学基础详解 2——概率论与数理统计
    1—机器学习简介
    Python基础(11)——反射、异常处理
  • 原文地址:https://www.cnblogs.com/comefuture/p/8305960.html
Copyright © 2020-2023  润新知