zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    推荐一个简洁优雅的博客系统,farbox
    flash从数据流判断图片格式防止xss攻击
    iBatis框架batch处理优化 (转)
    hadoop环境中误删除tmp文件夹的恢复
    Mysql04
    MapReduce中文翻译
    Big Table中文翻译
    GFS中文翻译
    HDFS读写流程
    两个网卡的设置
  • 原文地址:https://www.cnblogs.com/pspgbhu/p/5791712.html
Copyright © 2011-2022 走看看