码迷,mamicode.com
首页 > 编程语言 > 详细

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

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

标签:style   blog   color   io   java   ar   strong   div   问题   


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章 变量、作用域和内存问题)

标签:style   blog   color   io   java   ar   strong   div   问题   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!