美文网首页
javascript高级程序设计读书笔记(二)

javascript高级程序设计读书笔记(二)

作者: youngiyang_打码少年 | 来源:发表于2016-09-08 13:46 被阅读18次

    NO.1 变量

    JavaScript变量松散,本质上它只是特定时间用于保存特定值的一个名字而已

    JavaScript变量可能包含两种不同数据类型的值:
    1.基本类型值,指的是简单的数据段
    2.引用类型值,指的是由多个值构成的对象

    js的五种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值
    引用类型的值是保存在内存中的对象,和其他语言不同,JavaScript不能直接访问内存中的位置,所以js操作对象时,是操作对象的引用而不是实际的对象

    简单来说:基本类型指的是普通数据变量,引用类型指的是对象变量

    复制变量值:
    基本类型:
    var num1 = 5
    var num2 = num1;
    这两个变量是完全独立的
    引用类型:
    当复制对象时,由于对象的值是需要保存在内存里,复制对象之后,两个对象指向同一个值,相当于新建一个指针指向内存里的值
    var obj1 = new Object();
    var obj2 = obj1;
    obj1.name = "mike"
    alert(obj2.name); // mike

    传递参数:
    所有的参数都是按值传递的!包括参数为对象,也是按值传递的
    证明例子:

    function setName(obj){
      obj.name = "yzq";
      obj = new Object();
      obj.name = "小东"
    }
    
    var person = new Object();
    setName(person);
    console.log(person.name);  //yzq
    

    检测类型:
    typeof 检测基本数据类型的时候有用,但是检测对象类型没有意义,通常我们并不想知道某个值是对象,而是想知道它是什么类型的对象
    instanceof 用来检测对象是否是某种数据类型

    var person = new Object();
    alert(person instanceof Object);
    

    NO.2 执行环境及作用域

    执行环境定义了变量或函数有权访问其他数据,每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中,虽然代码无法访问这个对象,但是解析器在处理数据的时候会在后台使用它。
    如在web浏览器中,全局执行环境被认为是window对象,因此所有的全局变量和函数都是作为window对象的属性和方法创建的。
    代码示例:

    var color = "blue";
    function changeColor (){
      var anotherColor = "red";
      function swapColors(){
        var tempColor = anotherColor;
        anotherColor = color;
        color = tempColor
      }
      swapColors()
    }
    changeColor();
    

    所以执行环境的类型总共只有两种,全局和局部(也就是函数)

    变量声明:
    加var是局部变量,不加var是全局变量

    变量向上查找原则
    同名变量,局部变量优先

    NO.3 垃圾收集

    js是一种具有自动收集垃圾的编程语言,开发人员不必关心内存分配和回收问题
    js在函数执行完后,会自动释放内存

    相关文章

      网友评论

          本文标题:javascript高级程序设计读书笔记(二)

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