首页 > 编程语言 > 详细

javascript高级程序设计笔记(第4章 变量、作用域和内存问题)

时间:2014-09-04 18:33:59      阅读:242      评论:0      收藏:0      [点我收藏+]

1、 基本类型值Undefined、Null、Boolean、Number 和 String 

  基本类型值的复制过程(图解

基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中;
从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本;

2、引用类型值 

  变量对象中的变量和保存在堆中的对象(图解

引用类型的值是对象,保存在堆内存中;

包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针;
从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象;

3、传递参数,按值传递,按引用传递

ECMAScript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样。有不少开发人员在这一点上可能会感到困惑,
因为访问变量有按值和按引用两种方式,而参数只能按值传递

 

function addTen(num) {
    num += 10;
    return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20,没有变化 
alert(result); //30
//note:

 

 

function setName(obj) {
    obj.name = "Nicholas";
}
var person = new Object();
setName(person);
alert(person.name);    //"Nicholas"

 

function setName(obj) {
    obj.name = "Nicholas";
    obj = new Object();
    obj.name = "Greg";
}
var person = new Object();
setName(person);
alert(person.name);    //"Nicholas"

 

javascript高级程序设计笔记(第4章 变量、作用域和内存问题)

原文:http://www.cnblogs.com/liguwe/p/3956483.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!