小編給大家分享一下Javascript中有哪些引用類型傳遞,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司長期為近千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為源匯企業(yè)提供專業(yè)的成都網(wǎng)站建設、網(wǎng)站制作,源匯網(wǎng)站改版等技術(shù)服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。JS里面哪些類型是引用類型?
Object類型都是引用類型.(function,array,date,regexp..)
JS哪些類型是值傳遞?
基本類型都是值傳遞.值傳遞就是重新copy一個副本進行傳遞.
如何把值類型的變量以引用類型的方式進行傳遞?
通過把基礎類型包裝之后可以以引用類型傳遞.
ECMAScript提供了三個特殊的引用類型(基本包裝類型): Boolean,String,Number.
引用類型與基本包裝類型的區(qū)別: 對象的生存期不同.
見代碼:
var str = "hello js"; var str2 = str.substring(2,5); // str2的形成 在JS內(nèi)部是這樣實現(xiàn)的. var str = new String('hello js'); var str2 = str.substring(2,5); str = null ;
引用類型的內(nèi)存分配
如:var o = {name: ‘kobe'};
棧: 保存的是一個指針,指向的是對象在堆上面的內(nèi)存地址.我們通過指針句柄來操作堆上面的對象.
理解== 與 === 的區(qū)別
“===” 嚴格運算符
嚴格運算符的運算規(guī)則:
1、不同數(shù)據(jù)類型
如果兩個值的類型不同,直接返回false。
2、同一類型的基本數(shù)據(jù)類型(string,boolean,number)
同一類型的原始類型的值(數(shù)值、字符串、布爾值)比較時,值相同就返回true,值不同就返回false。
3、同一類型的復合數(shù)據(jù)類型
兩個復合類型(對象、數(shù)組、函數(shù))的數(shù)據(jù)比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個對象。
console.log( [1] === [1] ) // false
4、undefined和null
undefined 和 null 與自身嚴格相等。
console.log( null === null ) // true console.log( undefined === undefined ) // true
“==” 相等運算符
相等運算符在比較相同類型的數(shù)據(jù)時,與嚴格相等運算符完全一樣。
在比較不同類型的數(shù)據(jù)時,相等運算符會先將數(shù)據(jù)進行類型轉(zhuǎn)換,然后再用嚴格相等運算符比較。類型轉(zhuǎn)換規(guī)則如下(以下討論的是不同類型):
1、都是原始類型的值得情況
原始類型的數(shù)據(jù)會轉(zhuǎn)換成數(shù)值類型再進行比較。
2、對象與原始類型值比較
對象(這里指廣義的對象,包括數(shù)值和函數(shù))與原始類型的值比較時,對象轉(zhuǎn)化成原始類型的值,再進行比較。
3、undefined和null
undefined和null與其他類型的值比較時,結(jié)果都為false,它們互相比較時結(jié)果為true
console.log( null == undefined ) // true
4、相等運算符的缺點
相等運算符隱藏的類型轉(zhuǎn)換,會帶來一些違反直覺的結(jié)果。
console.log( "" == "0" ) // false console.log( 0 == "" ) // true console.log( 0 == "0" ) // true console.log( false == "false" ) // false console.log( false == "0" ) // true
還有一個就是涉及undefined的條件判斷,undefined與null的條件判斷.可能會對你的代碼造成印象.
var a = undefined; if(!a){ console.log("1"); //1 } var a = undefined; if(a === null){ console.log("1"); //無輸出 }
以上是“Javascript中有哪些引用類型傳遞”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。