日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript引用是如何工作的

瀏覽:86日期:2023-11-14 13:55:18

JavaScript中沒(méi)有指針,并且JavaScript中的引用與我們通常看到的大多數(shù)其他流行編程語(yǔ)言的工作方式不同。在JavaScript中,不可能有一個(gè)變量到另一個(gè)變量的引用。而且,只有復(fù)合值(例如對(duì)象或數(shù)組)可以通過(guò)引用來(lái)賦值。

整片文章中將使用下列屬于:

標(biāo)量–單個(gè)值或數(shù)據(jù)單元(如整數(shù)、布爾值、字符串)

復(fù)合--由多個(gè)值組成(如數(shù)組、對(duì)象、集合)

原始 - 直接的價(jià)值,而不是對(duì)包含值的東西的引用。

JavaScript的標(biāo)量類型是原語(yǔ),不像其他一些語(yǔ)言(如Ruby)具有標(biāo)量引用類型。注意,在JavaScript中,標(biāo)量原始值是不可變的,而復(fù)合值是可變的。

概要:

1.分配給變量的值的類型決定該值存儲(chǔ)的是值還是引用。

2.在變量賦值的時(shí)候,標(biāo)量原始值(Number,String,Boolean,undefined,null,Symbol)通過(guò)值來(lái)賦值,復(fù)合值通過(guò)引用來(lái)賦值。

3.JavaScript中的引用僅指向包含的值,不指向其他變量或引用。

4.在JavaScript中,標(biāo)量原始值是不可變的,復(fù)合值是可變的。

通過(guò)值賦值的快速示例

在下面的代碼片段中,我們將一個(gè)標(biāo)量原始值(一個(gè)數(shù)字)分配給一個(gè)變量,因此這里是通過(guò)值來(lái)賦值。首先,變量 batman 被初始化,當(dāng)變量 superman 被分配存儲(chǔ)在 batman 中的值的時(shí)候,實(shí)際上是創(chuàng)建了該值的一個(gè)副本并存儲(chǔ)在變量 superman 中。當(dāng)變量 superman 被修改時(shí),變量 batman 不會(huì)受到影響,因?yàn)樗鼈冎赶虿煌闹怠?/p>

var batman = 7;var superman = batman; //通過(guò)值來(lái)賦值superman++;console.log(batman); //7console.log(superman); //8

JavaScript引用是如何工作的

通過(guò)引用賦值的快速示例

在下面的代碼片段中,我們將一個(gè)復(fù)合值(數(shù)組)賦值給一個(gè)變量,因此這里是通過(guò)引用賦值。變量 flash 和 quicksilver 是相同的值(也稱為共享值)的引用。當(dāng)修改共享值時(shí),引用將指向更新的值。

var flash = [8,8,8];var quicksilver = flash; //通過(guò)引用來(lái)賦值quicksilver.push(0);console.log(flash);//[8,8,8,0]console.log(quicksilver); //[8,8,8,0]

JavaScript引用是如何工作的

如何創(chuàng)建一個(gè)新的引用

當(dāng)變量中的復(fù)合值被重新賦值的時(shí)候,將創(chuàng)建一個(gè)新的引用。在JavaScript中,與大多數(shù)其他流行的編程語(yǔ)言不同是:引用指向存儲(chǔ)在變量中的值,不指向其他變量或者引用。

var firestorm = [3,6,3];var atom = firestorm; //通過(guò)引用來(lái)賦值console.log(firestorm); //[3,6,3]console.log(atom); //[3,6,3]atom = [9,0,9]; //通過(guò)值來(lái)賦值 (創(chuàng)建新的引用)console.log(firestorm); //[3,6,3]console.log(atom); //[9,0,9]

JavaScript引用是如何工作的

當(dāng)引用作為函數(shù)參數(shù)傳遞時(shí),引用如何工作

在下面的代碼片段中,變量 magneto 是一個(gè)復(fù)合值(一個(gè)數(shù)組),因此它作為一個(gè)引用被賦值給了變量 x (函數(shù)參數(shù))。

在IIFE中調(diào)用的 Array.prototype.push 方法會(huì)通過(guò)JavaScript引用來(lái)改變變量中的值。但是,變量x的重新賦值會(huì)創(chuàng)建一個(gè)新的引用,并且對(duì)變量 x 的進(jìn)一步修改不會(huì)影響到變量 magneto 的引用。

var magneto = [8,4,8];(function(x) {//IIFE x.push(99); console.log(x); //[8,4,8,99] x = [1,4,1]; //重新賦值變量 (創(chuàng)建一個(gè)新的引用) x.push(88); console.log(x); //[1,4,1,88]})(magneto);console.log(magneto); //[8,4,8,99] 如何更改作為函數(shù)參數(shù)通過(guò)JavaScript引用傳遞的復(fù)合變量中的原始值

這里的解決方案是修改引用指向的現(xiàn)有復(fù)合值。在下面的代碼片段中,變量 wolverine 是一個(gè)復(fù)合值(一個(gè)數(shù)組)并且在IIFE中被調(diào)用,變量 x (函數(shù)參數(shù))是被賦值了一個(gè)引用。

可以通過(guò)將屬性 Array.prototype.length 的值設(shè)置為0來(lái)創(chuàng)建一個(gè)空數(shù)組。因此,變量 wolverine 通過(guò)JavaScript引用更改為變量x中的新值。

var wolverine = [8,7,8];(function(x) { //IIFE x.length = 0; //創(chuàng)建空數(shù)組對(duì)象 x.push(1,4,7,2); console.log(x); //[1,4,7,2]})(wolverine);console.log(wolverine); //[1,4,7,2] 如何通過(guò)按值賦值來(lái)存儲(chǔ)復(fù)合值

這里的解決方案是制作復(fù)合值的手動(dòng)副本,然后將復(fù)制的值分配給變量。因此,分配值的引用不指向原始值。

創(chuàng)建一個(gè)(淺)復(fù)合值副本(數(shù)組對(duì)象)推薦調(diào)用 Array.prototype.slice 方法,而不傳遞任何參數(shù)。

var cisco = [7,4,7];var zoom = cisco.slice(); //創(chuàng)建淺復(fù)制cisco.push(77,33);console.log(zoom); //[7,4,7]console.log(cisco);//[7,4,7,77,33]

JavaScript引用是如何工作的

如何通過(guò)按引用賦值來(lái)存儲(chǔ)一個(gè)標(biāo)量初始值

這里的解決方案是將標(biāo)量原始值包含在復(fù)合值(即對(duì)象或數(shù)組)中作為其屬性值。因此,它可以通過(guò)引用來(lái)賦值。在下面的代碼片段中,變量 speed 中的標(biāo)量原始值設(shè)置為flash對(duì)象的屬性。因此,在調(diào)用IIFE的時(shí)候,它通過(guò)引用賦值給了 x (函數(shù)參數(shù))。

var flash = { speed: 88 };(function (x) { //IIFE x.speed = 55;})(flash);console.log(flash.speed); //55 總結(jié)

很好地理解JavaScript中的引用可以幫助開(kāi)發(fā)人員避免許多常見(jiàn)的錯(cuò)誤,并編寫出更好的代碼。

編碼快樂(lè)!!

來(lái)自:https://segmentfault.com/a/1190000009017259

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
黑丝一区二区三区| 亚洲一区二区免费看| 中文字幕日本一区二区| 亚洲国产综合在线看不卡| 久久久久久一区二区| 欧美激情三区| 国产精品传媒麻豆hd| 欧美日韩18| 日韩av中文字幕一区| 亚洲精品看片| 蜜臀av一区二区在线免费观看| 伊人久久婷婷| av一区二区高清| 黄色亚洲大片免费在线观看| 亚洲二区三区不卡| av综合电影网站| 伊人久久av| 日韩天堂在线| 久久蜜桃av| 91久久中文| 蜜桃视频第一区免费观看| 中文精品电影| 日韩高清成人在线| 国产精品一区二区美女视频免费看 | av资源亚洲| 精品中文字幕一区二区三区四区| 九九99久久精品在免费线bt| 中文在线免费视频| 亚洲国产专区校园欧美| 免费视频久久| 日韩av中文字幕一区二区| 国产精品男女| 成人在线超碰| 久久精品亚洲人成影院 | 久久福利精品| 亚州精品视频| 国产精品v一区二区三区| 精品亚洲自拍| 丝袜av一区| 久久亚洲风情| 国产欧美日本| 日韩美女一区二区三区在线观看| 99精品视频精品精品视频| 免费日韩一区二区| 久久精品 人人爱| 国产一区2区| 免费观看不卡av| 99xxxx成人网| 青草综合视频| 黄色在线网站噜噜噜| 国产美女精品| 国产精品一区亚洲| 久久精品观看| 日韩有吗在线观看| 欧美www视频在线观看| 9色国产精品| 日本欧美一区二区| 国产成人精品一区二区三区视频 | 蜜桃视频第一区免费观看| 国产精品黄色| 亚洲男女av一区二区| 欧美视频一区| 99久久精品网| 国产探花一区二区| 天堂网av成人| 国产丝袜一区| 亚洲国产日韩欧美在线| 国产精品一区二区三区美女 | 国产一区二区三区视频在线| 亚洲一区二区动漫| 久久影院一区二区三区| 日韩视频久久| 另类综合日韩欧美亚洲| 亚洲资源av| 精品国产精品国产偷麻豆 | 亚洲深夜福利在线观看| 精品三级久久久| 亚洲一级大片| 88xx成人免费观看视频库| 欧美亚洲三区| 免费视频国产一区| 国产精品久久久久毛片大屁完整版| 国产91一区| 你懂的亚洲视频| 男女性色大片免费观看一区二区| 日本一区二区高清不卡| 首页亚洲欧美制服丝腿| 欧美久久天堂| 清纯唯美亚洲综合一区| 亚洲h色精品| 国产精品毛片aⅴ一区二区三区| 中文欧美日韩| 成人午夜网址| 日韩激情一区二区| 国产午夜精品一区二区三区欧美 | 亚洲一级特黄| 成人在线丰满少妇av| 欧美日韩亚洲三区| 视频在线观看91| 久久理论电影| 国产一区二区三区国产精品| 91成人在线精品视频| 久久亚洲风情| 亚洲国产影院| 国产精品久久久久久久久妇女| 日本少妇一区二区| 免费成人在线影院| 尤物网精品视频| 久久久久国产| 97人人精品| 久久精品福利| 国产精品一区二区三区av | 欧美日韩国产探花| 欧美片第1页| 国产一区调教| 美腿丝袜亚洲三区| 国产欧美一区二区三区精品观看| 久色成人在线| 一区在线免费| 国产二区精品| 国户精品久久久久久久久久久不卡| 98精品视频| 都市激情国产精品| 成人在线观看免费视频| 精品久久免费| 中文字幕在线视频久| 国产中文欧美日韩在线| 麻豆国产精品| 精品日韩一区| av资源新版天堂在线| 精品日韩一区| 综合日韩av| 免费一二一二在线视频| 日韩欧美三级| 四虎4545www国产精品 | 久久一区欧美| 久久亚洲黄色| 国产精品久久久久77777丨| 国产精品巨作av| 久久不卡国产精品一区二区| 免费在线亚洲| 91免费精品| 久久久夜精品| 日韩久久一区二区三区| 91精品婷婷色在线观看| 91精品国产成人观看| 韩国精品主播一区二区在线观看| 亚洲风情在线资源| 99精品视频精品精品视频| 九一成人免费视频| 久久国产精品久久久久久电车| 蜜臀av在线播放一区二区三区| 婷婷综合成人| 国产福利一区二区三区在线播放| 大香伊人久久精品一区二区| 亚洲成人av观看| 在线午夜精品| 日韩成人精品一区二区三区| 欧美日韩午夜电影网| 麻豆高清免费国产一区| 日韩精品第一区| 黄色成人精品网站| 日本不卡一二三区黄网| 麻豆精品视频在线观看视频| 亚洲三级欧美| 欧美在线亚洲| 亚洲九九精品| 国产乱码精品| 超碰成人av| 免费观看久久av| 日韩一区二区三区免费视频| 久久影院一区二区三区| 99成人在线视频| 亚洲欧美日韩国产一区二区| **爰片久久毛片| 91亚洲国产| 国产午夜久久| 国产精品久久乐| 成人精品天堂一区二区三区| 六月天综合网| 国产精品欧美大片| 久久精品国产亚洲夜色av网站| 亚洲一区二区三区四区电影| 国产精品一页| 欧美日韩一区二区综合| 亚洲乱码视频| 国产黄大片在线观看| 午夜在线视频一区二区区别 | 99视频精品| 国产精品亚洲片在线播放| 日韩在线二区| 午夜精品影视国产一区在线麻豆| 精品网站aaa| 香蕉久久久久久久av网站| 国产欧美一区二区三区精品观看| 色网在线免费观看| 日韩一区二区三区在线看| 福利视频一区| 亚洲美女久久| 激情亚洲影院在线观看|