引用(reference)、作用域(scope)、閉包(closure)以及上下文(context)是JavaScript重中之重的基礎,也是學習好JavaScript的基礎。在這裡我以淺顯的理解給大家分享一下:
一、首先說明下引用(定義):引用是指向一個對象實際位置的指針;
說明:在這裡大家也許這話不大好理解,淺顯地說:“引用” = “別名”。(我想)也就是在編程語言給變量、對象…..等起個名稱,以便於在需要的時候進行調用。
變量也是對象,那下面就以變量簡單的事例為例
例如:假如有個變量 a, 想在下次用的時候引用它,給它起個別名 b;
Int a;
Int &b =a;//記住:指向 對象實際位置的指針。(嘿嘿…如果你對指針很理解,那下面就不用看了,編程嘛,學習不會的知識)
注意 1:在這裡是對變量的引用,內存並不為它開辟實際的內存單元,b和a 對代表同一變量單元,在申明一個引用時,必須同時使之初始化。(只有申明,沒有定義,只是申明它和原有的某一變量的關系。在引用時 a 、b 兩值同時隨之其中之一的變化而變化)。
注意2:在你申明一個引用後(b),該引用一直與其代表的變量相聯系,不能再作為其它變量的別名(一一對應)。
二、學習了引用,下面理解下引入引用的目的:
一句話:利用其作為函數的參數,以擴充函數傳遞數據的功能。(在下一篇文章裡詳細比較了參數傳遞的形式)
在這裡出現一個我目前很不明白的現象(希望讀者賜教,不勝感激):
從引用的概念上說是指向對象實際位置的指針;但是在JavaScript裡出現了(在C++語言未出現,並且明文規定不可以建立引用的數組)原因(個人):數組名只代表數組的首地址,本身不是一個占有存儲空間的變量
例如:
///建立一個數組的對象
Var items new { items1, items 2, items 3};
Var itemRef = items;//數組對象的引用
//將一個元素添加到數組中
Items.push(“items4”);