趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备。

  1. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值。

    • 基本类型包括:Undefined,Null,Boolean,Number和String,基本类型是按值访问方式;
    • 引用类型的值是对象,是按引用方式引用;
    • 在复制变量值时,两种数据类型的差异表现在:
      • 复制基本类型值后,创建的是这个值的副本,彼此两个变量可以参与任何操作而不会互相影响;
      • 复制引用类型值后,两个变量实际上将引用同一个对象;
    • 在作为参数传递时,两种数据类型值的传递分别如同他们各自的赋值规律;尽量把参数想象成局部变量,有助于理解“参数只能按值传递”的概念;
    • typeof操作符可以用来检测是哪一种基本数据类型;instanceof操作符可以用来检测是哪一种引用数据类型;
  2. 作用域(执行环境),作用域决定变量的生命周期:
    • 执行环境有全局执行环境和函数执行环境之分(不同其他语言,这里没有语句块的作用域);
    • 使用var声明的变量会自动被添加到最接近的环境中,没有使用var声明,该变量会自动被添加到全局环境中;因此初始变量之前,一定要声明;
    • 垃圾收集机制的原理是:找出不再继续使用的变量,然后释放其占用的内存。
      • 浏览器的具体实现通常有两个策略:标记清除、引用计数;
      • “标记清除”是目前主流的收集算法;在IE中访问非原生JS对象(BOM,DOM元素)时,会使用到“引用计数”算法,但会导致一些问题(当代码中存在循环引用现象时);
  3. 内存
    • 优化内存的最佳方式,就是为执行中的代码只保留必要的数据。

      • 一旦数据不再有用,最好通过将其设置为null来释放其引用(即“解除引用”方法);这一方法适用于大多数全局变量和全局对象的属性;
      • 解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。

      书本类容范围:《JavaScript高级程序设计》P68-82

JavaScript系统学习小结——变量、作用域和内存问题的更多相关文章

  1. JavaScript系统学习小结——Object类型、Array类型

    今天学习JavaSript中引用变量中的Object类型和Array类型: 1. Js中大多数引用类型值都是Object类型的实例,Object类型在应用程序中存储和传输数据时,是非常理想的选择: 创 ...

  2. 第一百零六节,JavaScript变量作用域及内存

    JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...

  3. JavaScript解析顺序和变量作用域

    JavaScript基础之变量作用域. 一. 1.全局变量:全局变量的意思就是,在代码的不论什么地方都能够訪问到.注意:未定义 直接赋值的变量拥有全局属性. 2.局部变量:局部变量的意思就是,变量的作 ...

  4. javaScript的闭包 js变量作用域

    js的闭包 js的变量作用域: var a=90; //定义一个全局变量 function test(){ a=123; //使用外层的 a变量 } test(); document.write(&q ...

  5. go学习笔记-变量作用域

    变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. 变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式 ...

  6. 浅谈javascript中变量作用域和内存(2)

    1.无块级作用域 javascript没有块级作用域,这会让其他程序员在理解js代码上很痛苦.在其他很多语言,比如C,大括号括起来的代码块都有自己的作用域 举个例子 if(true) { var na ...

  7. JavaScript变量作用域和内存问题(二)

    执行环境是js中特别重要的概念,是指变量或者函数可以访问其他数据,定义自己的行为.每个执行环境都有一个与之相对应的变量对象,执行环境中定义的所有变量和函数都保存在这个变量中,我们看不到这个变量,但是后 ...

  8. 浅谈javascript中变量作用域和内存(1)

    先理解两个概念:基本类型和引用类型的值 1.基本类型和引用类型的值 (1)定义: 基本类型:指简单的数据段,比如按值访问的js五种基本数据类型undefined.null.boolean.number ...

  9. javascript高级程序设计第3版——第4章 变量作用域以及内存

随机推荐

  1. redis学习(1)--- NoSQL介绍

    一.NoSQL介绍 1.什么是NoSQL NoSQL = Not Only SQL 非关系型数据库 2.为什么用NoSQL High performance - 高并发读写 Huge Storage ...

  2. Myeclipse8.6注册机代码,不用到处找注册机了

    import java.io.*; public class MyEclipseGen { private static final String LL = "Decompiling thi ...

  3. V9发布内容时保留框架<iframe></iframe>

    有些时候,发布文章内容的时候需要用到<iframe></iframe>框架站外内容最近在发布内容时就遇到这个问题,<iframe></iframe>给转 ...

  4. java源码学习(二)Integer

    Integer类包含了一个原始基本类型int.Integer属性中就一个属性,它的类型就是int. 此外,这个类还提供了几个把int转成String和把String转成int的方法,同样也提供了其它跟 ...

  5. php后台拼接输出table表格

    <?php header("Content-type:text/html;charset=utf-8"); $str=''; $str.='<table border= ...

  6. php随机获取验证码

    <?php $yzm = ""; for($i=0;$i<5;$i++) { $a = rand(0,9); //0-9随机数 $yzm.= $a; } echo jo ...

  7. 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步

    Angular.js与Vue.js是非常有渊源的两款前端框架,据Vue.js的官方网站描述,在其早期开发时,灵感来源就是Angular.js.而在很多方面,Vue.js也正像是中国的那句古话,&quo ...

  8. call, apply,bind 方法解析

    call(), apply(),bind() 三者皆为Function的方法 call(),apply()的作用是调用方法,并改变函数运行时的context(作用上下文) bind() 的作用是引用方 ...

  9. 一个DOM元素同时拥有多个类名时的样式产生冲突时 属性取决于css样式表中后读取到的属性

    如果一个DOM元素包含多个类名,其中的两个类名的属性产生冲突,并不是根据htnl中类名的顺序来决定DOM元素的属性, 而是根据css样式中的顺序来决定DOM元素的属性,它取决于css样式表中后读取到的 ...

  10. Educational Codeforces Round 20.C

    C. Maximal GCD time limit per test 1 second memory limit per test 256 megabytes input standard input ...