js中的值類型和引用類型小結(jié) 文字說(shuō)明與實(shí)例
更新時(shí)間:2010年12月12日 18:58:39 作者:
下面就舉例講一下這兩種類型在JavaScript中的體現(xiàn)、用法及注意事項(xiàng)。
一、擁抱JavaScript
曾經(jīng)名不經(jīng)傳的JavaScript隨著AJAX的流行而身價(jià)倍增,現(xiàn)在JavaScript不再僅僅是WEB開(kāi)發(fā)中一個(gè)可有可無(wú)的輔助工具,甚至有了專門屬于它的職位“JavaScript工程師”,那怕你僅僅是一名WEB后臺(tái)開(kāi)發(fā)程序員,你都必須了解JavaScript,至少在一些相關(guān)招聘職位要求上你可以看到“熟悉JavaScript優(yōu)先”的字眼。甚至我還要告訴你,你將可以用JavaScript開(kāi)發(fā)桌面軟件,這得益于Adobe AIR的另外一種開(kāi)發(fā)模式,即用HTML+CSS+JavaScript開(kāi)發(fā)AIR。
二、值類型和引用類型話題
隨著部分有大型面向?qū)ο笳Z(yǔ)言基礎(chǔ)朋友的介入,他們?cè)囍肑avaScript去模擬面像對(duì)象的各種特征,盡管有些模擬顯得較為牽強(qiáng),但也讓我們見(jiàn)識(shí)到了JavaScript的強(qiáng)大與靈活性。本文暫不探討JavaScript面向?qū)ο缶幊碳夹g(shù)。就講講JavaScript中的兩種變量類型:即值類型和引用類型,這通常又會(huì)讓你聯(lián)想到“堆?!?,另外還有“引用地址”或“指針”相關(guān)概念,有過(guò)Java或C#編程經(jīng)驗(yàn)的人相信對(duì)這兩種類型不陌生。下面就舉例講一下這兩種類型在JavaScript中的體現(xiàn)、用法及注意事項(xiàng)。
三、JavaScript值類型和引用類型有哪些
(1)值類型:數(shù)值、布爾值、null、undefined。
(2)引用類型:對(duì)象、數(shù)組、函數(shù)。
四、如何理解值類型和引用類型及舉例
我們可以用“連鎖店”和“連鎖店鑰匙”來(lái)理解,不知道以下比喻合不合適,^-^。
(1)值類型理解:變量的交換等于在一個(gè)新的地方按照連鎖店的規(guī)范標(biāo)準(zhǔn)(統(tǒng)一店面理解為相同的變量?jī)?nèi)容)新開(kāi)一個(gè)分店,這樣新開(kāi)的店與其它舊店互不相關(guān)、各自運(yùn)營(yíng)。
【值類型例子】
function chainStore()
{
var store1='Nike China';
var store2=store1;
store1='Nike U.S.A.';
alert(store2); //Nike China
}
chainStore();
//把一個(gè)值類型(也可以叫基本類型)store2傳遞給另一個(gè)變量(賦值)時(shí),其實(shí)是分配了一塊新的內(nèi)存空間,因此改變store1的值對(duì)store2沒(méi)有任何影響,因?yàn)樗幌褚妙愋停兞康慕粨Q其實(shí)是交換了指像同一個(gè)內(nèi)容的地址。
(2)引用類型理解:變量的交換等于把現(xiàn)有一間店的鑰匙(變量引用地址)復(fù)制一把給了另外一個(gè)老板,此時(shí)兩個(gè)老板同時(shí)管理一間店,兩個(gè)老板的行為都有可能對(duì)一間店的運(yùn)營(yíng)造成影響。
【引用類型例子】
function chainStore()
{
var store1=['Nike China'];
var store2=store1;
alert(store2[0]); //Nike China
store1[0]='Nike U.S.A.';
alert(store2[0]); //Nike U.S.A.
}
chainStore();
//在上面的代碼中,store2只進(jìn)行了一次賦值,理論上它的值已定,但后面通過(guò)改寫store1的值,發(fā)現(xiàn)store2的值也發(fā)生了改變,這正是引用類型的特征,也是我們要注意的地方。
曾經(jīng)名不經(jīng)傳的JavaScript隨著AJAX的流行而身價(jià)倍增,現(xiàn)在JavaScript不再僅僅是WEB開(kāi)發(fā)中一個(gè)可有可無(wú)的輔助工具,甚至有了專門屬于它的職位“JavaScript工程師”,那怕你僅僅是一名WEB后臺(tái)開(kāi)發(fā)程序員,你都必須了解JavaScript,至少在一些相關(guān)招聘職位要求上你可以看到“熟悉JavaScript優(yōu)先”的字眼。甚至我還要告訴你,你將可以用JavaScript開(kāi)發(fā)桌面軟件,這得益于Adobe AIR的另外一種開(kāi)發(fā)模式,即用HTML+CSS+JavaScript開(kāi)發(fā)AIR。
二、值類型和引用類型話題
隨著部分有大型面向?qū)ο笳Z(yǔ)言基礎(chǔ)朋友的介入,他們?cè)囍肑avaScript去模擬面像對(duì)象的各種特征,盡管有些模擬顯得較為牽強(qiáng),但也讓我們見(jiàn)識(shí)到了JavaScript的強(qiáng)大與靈活性。本文暫不探討JavaScript面向?qū)ο缶幊碳夹g(shù)。就講講JavaScript中的兩種變量類型:即值類型和引用類型,這通常又會(huì)讓你聯(lián)想到“堆?!?,另外還有“引用地址”或“指針”相關(guān)概念,有過(guò)Java或C#編程經(jīng)驗(yàn)的人相信對(duì)這兩種類型不陌生。下面就舉例講一下這兩種類型在JavaScript中的體現(xiàn)、用法及注意事項(xiàng)。
三、JavaScript值類型和引用類型有哪些
(1)值類型:數(shù)值、布爾值、null、undefined。
(2)引用類型:對(duì)象、數(shù)組、函數(shù)。
四、如何理解值類型和引用類型及舉例
我們可以用“連鎖店”和“連鎖店鑰匙”來(lái)理解,不知道以下比喻合不合適,^-^。
(1)值類型理解:變量的交換等于在一個(gè)新的地方按照連鎖店的規(guī)范標(biāo)準(zhǔn)(統(tǒng)一店面理解為相同的變量?jī)?nèi)容)新開(kāi)一個(gè)分店,這樣新開(kāi)的店與其它舊店互不相關(guān)、各自運(yùn)營(yíng)。
【值類型例子】
復(fù)制代碼 代碼如下:
function chainStore()
{
var store1='Nike China';
var store2=store1;
store1='Nike U.S.A.';
alert(store2); //Nike China
}
chainStore();
//把一個(gè)值類型(也可以叫基本類型)store2傳遞給另一個(gè)變量(賦值)時(shí),其實(shí)是分配了一塊新的內(nèi)存空間,因此改變store1的值對(duì)store2沒(méi)有任何影響,因?yàn)樗幌褚妙愋停兞康慕粨Q其實(shí)是交換了指像同一個(gè)內(nèi)容的地址。
(2)引用類型理解:變量的交換等于把現(xiàn)有一間店的鑰匙(變量引用地址)復(fù)制一把給了另外一個(gè)老板,此時(shí)兩個(gè)老板同時(shí)管理一間店,兩個(gè)老板的行為都有可能對(duì)一間店的運(yùn)營(yíng)造成影響。
【引用類型例子】
復(fù)制代碼 代碼如下:
function chainStore()
{
var store1=['Nike China'];
var store2=store1;
alert(store2[0]); //Nike China
store1[0]='Nike U.S.A.';
alert(store2[0]); //Nike U.S.A.
}
chainStore();
//在上面的代碼中,store2只進(jìn)行了一次賦值,理論上它的值已定,但后面通過(guò)改寫store1的值,發(fā)現(xiàn)store2的值也發(fā)生了改變,這正是引用類型的特征,也是我們要注意的地方。
相關(guān)文章
IE與FireFox的JavaScript兼容問(wèn)題解決辦法
本篇文章主要是對(duì)IE與FireFox的JavaScript兼容問(wèn)題解決辦法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12javascript中parseInt()函數(shù)的定義和用法分析
這篇文章主要介紹了javascript中parseInt()函數(shù)的定義和用法,較為詳細(xì)的分析了parseInt()函數(shù)的定義及具體用法,以及參數(shù)使用時(shí)的注意事項(xiàng),需要的朋友可以參考下2014-12-12js實(shí)現(xiàn)三角形粒子運(yùn)動(dòng)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)三角形粒子運(yùn)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JS+CSS實(shí)現(xiàn)仿msn風(fēng)格選項(xiàng)卡效果代碼
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)仿msn風(fēng)格選項(xiàng)卡效果代碼,涉及JavaScript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)變換頁(yè)面元素css樣式實(shí)現(xiàn)切換功能的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10用JS寫一段判斷搜索引擎來(lái)路并且屏蔽PC的跳轉(zhuǎn)代碼
以下是用JS寫的判斷搜索引擎來(lái)路并屏蔽PC跳轉(zhuǎn)的代碼,需要的朋友可以參考下2023-12-12微信小程序的數(shù)據(jù)存儲(chǔ)與Django等服務(wù)發(fā)送請(qǐng)求?講解
這篇文章主要為大家介紹了微信小程序的數(shù)據(jù)存儲(chǔ)與Django等服務(wù)發(fā)送請(qǐng)求講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04JS 循環(huán)li添加點(diǎn)擊事件 (閉包的應(yīng)用)
這篇文章主要介紹了js循環(huán)li添加點(diǎn)擊事件 (閉包的應(yīng)用)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12