《javaScript高级程序设计》第四章  读书笔记
4.1  基本类型 和 引用类型 的值
1. 基本类型值 包括:Undefined、Null、Boolean、Number 和 String。
  引用类型值 指那些可能由多个值构成的对象。【注意:字符串不是引用类型的】
2. 基本类型 在内存中占据固定大小的空间,因此被保存在栈内存中。
  引用类型 的值是对象,保存在堆内存中。
  【对象的访问地址在栈内存中存放,但该对象的值由堆内存来分配空间】
  【由于对象的值的大小不固定,因此不能把它们保存到栈内存中。但内存地址大小是固定的,因此可以将内存地址大小保存在栈内存中。】
3. 从一个变量到另一个变量复制 引用类型 的值,复制的其实是指针,因此两个变量最终都指向同一个对象。
4. 确定一个值是哪种基本类型可以用 typeof 操作符,而确定一个值是哪种引用类型可以使用 instanceof 操作符。
5. ECMAScript中所有函数的参数都是按值传递的。

相关文章:JavaScript变量——栈内存or堆内存(http://www.tuicool.com/articles/m2queq)


4.2  执行环境 及 作用域
1. 执行环境 有 全局执行环境(全局环境) 和 函数执行环境 之分。
2. 每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链。
3. 变量的执行环境有助于确定应该何时释放内存。
4. 在严格模式下,初始化未经声明的变量会导致错误。
5. 执行环境决定了变量的生命周期。

4.3  垃圾收集
1. JavaScript是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存分配和回收问题。
 
2. 离开作用域的值将被自动标记为可以回收,因此将在垃圾收集期间被删除。
3. “标记清除”是目前主流的垃圾收集算法,这种算法的思想是 给当前不使用的值加上标记,然后再回收其内存。
4. 另一种是“引用计数”。当代码中存在循环引用现象时,“引用计数”算法就会导致问题。

javaScript之 变量、作用域和内存问题的更多相关文章

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

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

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

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

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

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

  4. [转]深入理解JavaScript的变量作用域

    1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定 ...

  5. 深入理解JavaScript的变量作用域(转载Rain Man之作)

    在学习JavaScript的变量作用域之前,我们应当明确几点: JavaScript的变量作用域是基于其特有的作用域链的. JavaScript没有块级作用域. 函数中声明的变量在整个函数中都有定义. ...

  6. 深入理解JavaScript的变量作用域

    在学习JavaScript的变量作用域之前,我们应当明确几点: JavaScript的变量作用域是基于其特有的作用域链的. JavaScript没有块级作用域. 函数中声明的变量在整个函数中都有定义. ...

  7. JavaScript函数变量作用域

    变量作用域 在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量. 如果两个不同的函数各自申明了同一变 ...

  8. Javascript之变量作用域

    分析: 无论是强类型语言c#.c++.java等语言,还是弱类型语言如Javascript,所有变量可以抽象为两种类型,即局部变量和全局变量. 全局变量:整个作用域可见. 局部变量:局部可见,退出作用 ...

  9. javascript的变量作用域--对比js、php和c的for循环

    为什么要写这篇文章呢?主要是给自己提个醒,js的水很深,需要小心点儿才能趟过去,更何况自己不是专业人士,那就得更加小心了. 看下面的js代码: <!DOCTYPE html> <ht ...

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

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

随机推荐

  1. 【ZZ】快速學會開發Android App

    http://www.cc.ntu.edu.tw/chinese/epaper/0022/20120920_2209.html 作者:吳玉舒 / 臺灣大學計算機及資訊網路中心程式設計組幹事 智慧型手機 ...

  2. C#中listbox中选中多项,并删除

    1.SelectionMode 改成可以多选2.利用KeyDown事件: private void listBox1_KeyDown(object sender, KeyEventArgs e) { ...

  3. 基于jquery tool实现的windows桌面效果

    今天给大家分享一款基于jquery tool实现的windows桌面效果.这款实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: ...

  4. 话说C语言const用法

    const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量. 例: void ...

  5. layer.js,,,分享一个好用的弹出层

    基本属性: <!DOCTYPE html> <html> <head> <head> <meta content="text/html; ...

  6. c#winform将全局异常抛出,不用大量写try()catch()

    一.在program.cs处完善成如下,但是这样后只能抛出主线程(UI)的错误,所以请看第二步 /// 应用程序的主入口点. /// </summary> [STAThread] stat ...

  7. [JavaEE] SSH框架笔记_eclipse搭建SSH框架详解

    SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作. 下载好eclipse,Struts2,Spring,Hibe ...

  8. [Java] JAVA程序员您需要学习的25个标准

    (1) 你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该了解UML,尤其是class,object,interaction以 及statediagr ...

  9. 【Android 界面效果39】android:inputType问题

    1.  在XML代码中实现比较简单, 直接设置android:inputType="textMultiLine": [mw_shl_code=java,true]<EditT ...

  10. git管理工具的使用教程

    Git入门教程 1.   概述     对于软件版本管理工具,为什么要选择Git?      你真正学会使用Git时, 你就会觉得这个问题的回答是非常自然的.然而当真正需要用文字来回答时,却觉得文字好 ...