美文网首页
第四章 变量、作用域和内存问题

第四章 变量、作用域和内存问题

作者: dudu_du | 来源:发表于2017-06-15 13:30 被阅读0次

ECMAScript变量分为两种不同数据类型的值:基本类型值和引用类型值。

基本数据类型:Undefined,Null,Boolean,Number,String,按值访问

引用数据类型:对象,按引用访问

ECMAScript中所有函数的参数都是按照值传递的。也就是说,把函数外部的值复制到函数的内部的参数,就和把值从一个变量复制到另一个变量一样。

function setName(obj){
  obj.name = "zhang";
  obj = new Object();
  obj.name = "greg";
}
var person = new Object();
setName(person);
console.log(person.name);

检测基本类型的方法:typeof;
检测什么类型对象的方法:instance;

基本类型值在内存中占据固定大小的空间,因此被保存在栈空间;
从一个变量向另一个变量复制基本类型的值,会创建这个值得一个副本;
引用类型的值是对象,保存在堆内存中;
包含引用类型值得变量实际上包含的并不是对象本身,而是一个指向给对象的指针;
从一个对象向另一个对象复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象;
确定一个值是那种基本类型用typeof操作符,确定一个值是那种引用类型可以使用instanceof操作符。

“标记清除”是目前主流的垃圾收集算法,思想是给当前不适用的值加上标记,然后在回收其内存。
另一种垃圾收集算法是“引用计数”,这种算法的思想是跟踪记录所有制被引用的次数。JavaScript引擎目前都不在使用这种算法,但在IE中访问非原生JavaScript对象(如DOM元素)时,这种算法仍然会导致问题。
解除变量的引用不仅有助于消除循环引用对象,而且对垃圾收集有好处。

相关文章

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

    变量,作用域,和内存的问题 javascript高级程序设计读书笔记(四) 变量,作用域,和内存的问题 变量 不存...

  • 2018-11-25红宝书第4章总结

    第四章 变量、作用域和内存问题 ecmascript变量包含两种不同数据类型:基本类型和引用类型(对象) 五种基本...

  • js基础知识(二)

    第四章 变量、作用域和内存问题 基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基...

  • js 不修改原数组,返回新的数组

    根据javascript高程第四章 变量、作用域和内存问题 4.1 基本类型和引用类型的值 1)基本类型值指的是简...

  • javascript高级程序设计(第4章)-- 变量、作用域和内

    第四章:变量、作用域和内存问题 本章内容: 理解基本类型和引用类型 理解执行环境 理解垃圾回收机制 4.1 基本类...

  • 变量、作用域和内存问题

    基本类型和引用类型的值 基本类型值指的是简单的数据段;引用类型值指那些可能由多个值构成的对象。不能给基本类型添加属...

  • 变量、作用域和内存问题

    一、变量 1、变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是 简单的数据段,而引用类型...

  • 变量,作用域和内存问题

    基本类型和引用类型的值 变量可能包含两种不同数据类型的值:基础类型值和引用类型值。基本类型是按值访问的,因为可以操...

  • 变量、作用域和内存问题

    1.1 基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本...

  • 变量、作用域和内存问题

    JavaScript可以用来保存两种类型的值:基本类型值和引用类型值。基本类型值源自以下五种基本数据类型:Unde...

网友评论

      本文标题:第四章 变量、作用域和内存问题

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