www.hj8828.comjs 值类型和援引类型

一、拥抱JavaScript
曾经名不经传的JavaScript随着AJAX的流行而身价倍增,现在JavaScript不再仅仅是WEB开发中一个可有可无的辅助工具,甚至有了专门属于它的职位“JavaScript工程师”,那怕你仅仅是一名WEB后台开发程序员,你都必须了解JavaScript,至少在一些相关招聘职位要求上你可以看到“熟悉JavaScript优先”的字眼。甚至我还要告诉你,你将可以用JavaScript开发桌面软件,这得益于Adobe
AIR的另外一种开发模式,即用HTML+CSS+JavaScript开发AIR。
二、值类型和引用类型话题
随着部分有大型面向对象语言基础朋友的介入,他们试着用JavaScript去模拟面像对象的各种特征,尽管有些模拟显得较为牵强,但也让我们见识到了JavaScript的强大与灵活性。本文暂不探讨JavaScript面向对象编程技术。就讲讲JavaScript中的两种变量类型:即值类型和引用类型,这通常又会让你联想到“堆栈”,另外还有“引用地址”或“指针”相关概念,有过Java或C#编程经验的人相信对这两种类型不陌生。下面就举例讲一下这两种类型在JavaScript中的体现、用法及注意事项。
三、JavaScript值类型和引用类型有哪些
值类型:数值、布尔值、null、undefined。 引用类型:对象、数组、函数。
四、如何理解值类型和引用类型及举例
我们可以用“连锁店”和“连锁店钥匙”来理解,不知道以下比喻合不合适,^-^。
值类型理解:变量的交换等于在一个新的地方按照连锁店的规范标准新开一个分店,这样新开的店与其它旧店互不相关、各自运营。
复制代码 代码如下: function chainStore()
{ var store1=’Nike China’; var store2=store1; store1=’Nike U.S.A.’;
alert; //Nike China }
chainStorestore2传递给另一个变量时,其实是分配了一块新的内存空间,因此改变store1的值对store2没有任何影响,因为它不像引用类型,变量的交换其实是交换了指像同一个内容的地址。
引用类型理解:变量的交换等于把现有一间店的钥匙复制一把给了另外一个老板,此时两个老板同时管理一间店,两个老板的行为都有可能对一间店的运营造成影响。
复制代码 代码如下: function chainStore()
{ var store1=[‘Nike China’]; var store2=store1; alert; //Nike China
store1[0]=’Nike U.S.A.’; alert; //Nike U.S.A. } chainStore();
//在上面的代码中,store2只进行了一次赋值,理论上它的值已定,但后面通过改写store1的值,发现store2的值也发生了改变,这正是引用类型的特征,也是我们要注意的地方。

function chainStore() 

var store1=’Nike China’; 
var store2=store1; 
store1=’Nike U.S.A.’; 
alert(store2); //Nike China 

chainStore(); 
//把一个值类型(也可以叫基本类型)store2传递给另一个变量(赋值)时,其实是分配了一块新的内存空间,因此改变store1的值对store2没有任何影响,因为它不像引用类型,变量的交换其实是交换了指像同一个内容的地址。

(2)引用类型理解:变量的交换等于把现有一间店的钥匙(变量引用地址)复制一把给了另外一个老板,此时两个老板同时管理一间店,两个老板的行为都有可能对一间店的运营造成影响。 

【引用类型例子】