• js学习之变量、作用域和内存问题


    js学习之变量、作用域和内存问题

    标签(空格分隔): javascript


    变量

    1.基本类型和引用类型:

    基本类型值:Undefined, Null, Boolean, Number, String;

    特点:

    • 在内存中占据着固定的地方和大小
    • 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本

    引用类型值: 是指那些可能由多个值够成的对象

    特点:

    • 引用类型的值是对象,保存在内存堆中
    • 包含引用类型值的变量复制引用类型的值,复制的实际是指针,因此两个变量最终都指向同一个对象

    参数传递

    所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数。


    执行环境及作用域

    每个函数都有自己的执行环境。

    代码在一个环境中执行,会创建变量对象的一个作用域链(scope chain)。作用域链的用途,是保证堆执行环境有权访问的所有变量和函数的有序访问。
    作用域链的前端,始终都是当前执行代码所在的环境变量对象。全局执行环境的变量始终都是作用域链的最后一个对象。

    1.没有块级作用域:

    if(true){
        var color = "red";
    }
    alert(color)   //red
    

    在块级作用域中声明的变量将会添加到当前作用域中去。

    在使用for语句时尤其注意这一点

    for(var i = 0; i<10; i++){
        doSomething(i);
    }
    alert(i)  // 10
    

    2.查询标识符:

    搜索过程沿着作用域链向上逐级查询与给定名字匹配的标识符。
    示例:

    var color = "blue";
    function getColor() {
        var color = "red";
        return color;
    }
    alert(getColor());//red
    

    作者博客:pspgbhu

    作者GitHub:https://github.com/pspgbhu

    欢迎转载,但请注明出处,谢谢!

  • 相关阅读:
    二叉查找树
    Hash算法原理理解
    算法的时间复杂度
    解决Ubuntu14.04下Clementine音乐播放器不能播放wma文件的问题
    Ubuntu 14.04 开启启动器图标最小化功能
    Ubuntu14.04建立WiFi热点
    C语言运算符优先级
    老鸟的Python入门教程
    MD5算法步骤详解
    MD5算法
  • 原文地址:https://www.cnblogs.com/pspgbhu/p/5791712.html
Copyright © 2020-2023  润新知