Javascript中引用類型傳遞的知識(shí)點(diǎn)小結(jié)
JS里面哪些類型是引用類型?
Object類型都是引用類型.(function,array,date,regexp..)
JS哪些類型是值傳遞?
基本類型都是值傳遞.值傳遞就是重新copy一個(gè)副本進(jìn)行傳遞.
如何把值類型的變量以引用類型的方式進(jìn)行傳遞?
通過(guò)把基礎(chǔ)類型包裝之后可以以引用類型傳遞.
ECMAScript提供了三個(gè)特殊的引用類型(基本包裝類型): Boolean,String,Number.
引用類型與基本包裝類型的區(qū)別: 對(duì)象的生存期不同.
見(jiàn)代碼:
var str = "hello js"; var str2 = str.substring(2,5); // str2的形成 在JS內(nèi)部是這樣實(shí)現(xiàn)的. var str = new String('hello js'); var str2 = str.substring(2,5); str = null ;
引用類型的內(nèi)存分配
如: var o = {name: ‘kobe'};
棧: 保存的是一個(gè)指針,指向的是對(duì)象在堆上面的內(nèi)存地址.我們通過(guò)指針句柄來(lái)操作堆上面的對(duì)象.
理解== 與 === 的區(qū)別
“===” 嚴(yán)格運(yùn)算符
嚴(yán)格運(yùn)算符的運(yùn)算規(guī)則:
1、不同數(shù)據(jù)類型
如果兩個(gè)值的類型不同,直接返回false。
2、同一類型的基本數(shù)據(jù)類型(string,boolean,number)
同一類型的原始類型的值(數(shù)值、字符串、布爾值)比較時(shí),值相同就返回true,值不同就返回false。
3、同一類型的復(fù)合數(shù)據(jù)類型
兩個(gè)復(fù)合類型(對(duì)象、數(shù)組、函數(shù))的數(shù)據(jù)比較時(shí),不是比較它們的值是否相等,而是比較它們是否指向同一個(gè)對(duì)象。
console.log( [1] === [1] ) // false
4、undefined和null
undefined 和 null 與自身嚴(yán)格相等。
console.log( null === null ) // true console.log( undefined === undefined ) // true
“==” 相等運(yùn)算符
相等運(yùn)算符在比較相同類型的數(shù)據(jù)時(shí),與嚴(yán)格相等運(yùn)算符完全一樣。
在比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,然后再用嚴(yán)格相等運(yùn)算符比較。類型轉(zhuǎn)換規(guī)則如下(以下討論的是不同類型):
1、都是原始類型的值得情況
原始類型的數(shù)據(jù)會(huì)轉(zhuǎn)換成數(shù)值類型再進(jìn)行比較。
2、對(duì)象與原始類型值比較
對(duì)象(這里指廣義的對(duì)象,包括數(shù)值和函數(shù))與原始類型的值比較時(shí),對(duì)象轉(zhuǎn)化成原始類型的值,再進(jìn)行比較。
3、undefined和null
undefined和null與其他類型的值比較時(shí),結(jié)果都為false,它們互相比較時(shí)結(jié)果為true
console.log( null == undefined ) // true
4、相等運(yùn)算符的缺點(diǎn)
相等運(yùn)算符隱藏的類型轉(zhuǎn)換,會(huì)帶來(lái)一些違反直覺(jué)的結(jié)果。
console.log( "" == "0" ) // false console.log( 0 == "" ) // true console.log( 0 == "0" ) // true console.log( false == "false" ) // false console.log( false == "0" ) // true
還有一個(gè)就是涉及undefined的條件判斷,undefined與null的條件判斷.可能會(huì)對(duì)你的代碼造成印象.
var a = undefined; if(!a){ console.log("1"); //1 } var a = undefined; if(a === null){ console.log("1"); //無(wú)輸出 }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
js實(shí)現(xiàn)對(duì)table動(dòng)態(tài)添加、刪除和更新的方法
這篇文章主要介紹了js實(shí)現(xiàn)對(duì)table動(dòng)態(tài)添加、刪除和更新的方法,涉及javascript針對(duì)html中table表格節(jié)點(diǎn)的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02微信小程序setInterval定時(shí)函數(shù)新手使用的超詳細(xì)教程
平時(shí)開(kāi)發(fā)中為實(shí)現(xiàn)倒計(jì)時(shí)效果可以使用setInterval即可,下面這篇文章主要給大家介紹了關(guān)于微信小程序setInterval定時(shí)函數(shù)新手使用的超詳細(xì)教程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08JS遍歷樹(shù)層級(jí)關(guān)系實(shí)現(xiàn)原理解析
這篇文章主要介紹了JS遍歷樹(shù)層級(jí)關(guān)系實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08js實(shí)現(xiàn)3D圖片環(huán)展示效果
本文主要介紹了js實(shí)現(xiàn)3D圖片環(huán)展示效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03淺述節(jié)點(diǎn)的創(chuàng)建及常見(jiàn)功能的實(shí)現(xiàn)
本文主要對(duì)節(jié)點(diǎn)的創(chuàng)建及常見(jiàn)功能的實(shí)現(xiàn)方法進(jìn)行介紹,希望會(huì)對(duì)大家學(xué)習(xí)javascript有所幫助,下面就跟小編一起來(lái)看下吧2016-12-12JS實(shí)現(xiàn)的加減乘除四則運(yùn)算計(jì)算器示例
這篇文章主要介紹了JS實(shí)現(xiàn)的加減乘除四則運(yùn)算計(jì)算器,涉及javascript事件響應(yīng)及數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-08-08