javascript的基本類型和引用類型

////每種語言數據類型是最基礎的東西了,今天被javascript的基本類型和引用類型搞暈,主要是在函數中的傳遞,所有數據都是按照“值”來傳遞的。

////剛開始看到李鬆峯老師 翻譯的 《JavaScript 高級程序設計 第二版》中第四章介紹,傳遞參數,函數傳遞參數)都是按照值來傳遞。這裏並不說所有情況都是按照值來傳遞。對於引用類型數值還是按照引用地址來傳遞。

javascript的數據類型

值類型:數值、布爾值、null、undefined。

引用類型:對象、數組、函數。

這裏插入一個個人對值的引用和地址引用的理解。

假如在我的書架上有很多本書,一個朋友找我來借書。

第一種方法:我告訴他的書的名字《失控》,這是一本不錯的書。你自己去書架上找吧。-- -- --固定值的引用

第二種方法:我告訴他第三排第8本(這是一個地址),你去拿。-- -- --按照地址的引用

圖中A:對應第一種方法,當告訴了b的書名爲1這個值之後,這時候a變量可以任意去改變書架上的書。a會被賦值,但是b依然會取得1這個值。

圖中B對應第二種方法,只是告訴了b的一個地址,(數組屬於引用類型)賦值時只是傳遞了一個地址。取中間第一排的三本,但是在這之前a來了,將一本書《javascript權威指南》插入到了中間的最前面,這是b再按照這個地址取書,就會發生變化了。

===================================

此時,基本類型和引用類型的引用應該能夠理解了吧。

看下面例子;

++++基本類型++++

var a = 3.14; //聲明並初始化一個變量
var b = a; //把該變量複製到一個新變量
a = 4; //修改原始變量的值
alert(b); //顯示3.14;副本沒有改變

++++引用類型++++

var a = [1,2,3]; //初始化一個引用數組的變量
var b = a; //把該引用複製到一個新變量
a[0] = 100; //用原始引用修改數組
alert(b); //新引用顯示改變後的數組[100,2,3]


++++++++++++++++++++++++++++最後一個比較難纏問題String

字符串是基本數據類型,String對象是引用類型,基本數據類型字符串在進行對象操作時會臨時轉化爲String對象,

所以會出現令人費解的情況,而JS String對象和其他對象一樣只是普通的引用

記住一點:string對象是引用類型,但是是按照值的傳遞方式計算。

JavaScript 的函數傳遞參數是值傳遞?還是值傳遞?對就是值傳遞……

avaScript 函數傳遞參數時,是值傳遞。雖然您可能不信,因爲ECMAScript 變量可能包含兩種不同數據類型的值:基本數據類型,和引用數據類型。難道引用數據類型傳遞的時候難道也是值傳遞嗎?答,沒錯。

具體介紹參考:http://www.xiaoxiaozi.com/2010/03/05/1719/



發佈了46 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章