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

您的位置:首頁技術文章
文章詳情頁

JavaScript引用是如何工作的

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

JavaScript中沒有指針,并且JavaScript中的引用與我們通常看到的大多數其他流行編程語言的工作方式不同。在JavaScript中,不可能有一個變量到另一個變量的引用。而且,只有復合值(例如對象或數組)可以通過引用來賦值。

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

標量–單個值或數據單元(如整數、布爾值、字符串)

復合--由多個值組成(如數組、對象、集合)

原始 - 直接的價值,而不是對包含值的東西的引用。

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

概要:

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

2.在變量賦值的時候,標量原始值(Number,String,Boolean,undefined,null,Symbol)通過值來賦值,復合值通過引用來賦值。

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

4.在JavaScript中,標量原始值是不可變的,復合值是可變的。

通過值賦值的快速示例

在下面的代碼片段中,我們將一個標量原始值(一個數字)分配給一個變量,因此這里是通過值來賦值。首先,變量 batman 被初始化,當變量 superman 被分配存儲在 batman 中的值的時候,實際上是創建了該值的一個副本并存儲在變量 superman 中。當變量 superman 被修改時,變量 batman 不會受到影響,因為它們指向不同的值。

var batman = 7;var superman = batman; //通過值來賦值superman++;console.log(batman); //7console.log(superman); //8

JavaScript引用是如何工作的

通過引用賦值的快速示例

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

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

JavaScript引用是如何工作的

如何創建一個新的引用

當變量中的復合值被重新賦值的時候,將創建一個新的引用。在JavaScript中,與大多數其他流行的編程語言不同是:引用指向存儲在變量中的值,不指向其他變量或者引用。

var firestorm = [3,6,3];var atom = firestorm; //通過引用來賦值console.log(firestorm); //[3,6,3]console.log(atom); //[3,6,3]atom = [9,0,9]; //通過值來賦值 (創建新的引用)console.log(firestorm); //[3,6,3]console.log(atom); //[9,0,9]

JavaScript引用是如何工作的

當引用作為函數參數傳遞時,引用如何工作

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

在IIFE中調用的 Array.prototype.push 方法會通過JavaScript引用來改變變量中的值。但是,變量x的重新賦值會創建一個新的引用,并且對變量 x 的進一步修改不會影響到變量 magneto 的引用。

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

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

可以通過將屬性 Array.prototype.length 的值設置為0來創建一個空數組。因此,變量 wolverine 通過JavaScript引用更改為變量x中的新值。

var wolverine = [8,7,8];(function(x) { //IIFE x.length = 0; //創建空數組對象 x.push(1,4,7,2); console.log(x); //[1,4,7,2]})(wolverine);console.log(wolverine); //[1,4,7,2] 如何通過按值賦值來存儲復合值

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

創建一個(淺)復合值副本(數組對象)推薦調用 Array.prototype.slice 方法,而不傳遞任何參數。

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

JavaScript引用是如何工作的

如何通過按引用賦值來存儲一個標量初始值

這里的解決方案是將標量原始值包含在復合值(即對象或數組)中作為其屬性值。因此,它可以通過引用來賦值。在下面的代碼片段中,變量 speed 中的標量原始值設置為flash對象的屬性。因此,在調用IIFE的時候,它通過引用賦值給了 x (函數參數)。

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

很好地理解JavaScript中的引用可以幫助開發人員避免許多常見的錯誤,并編寫出更好的代碼。

編碼快樂!!

來自:https://segmentfault.com/a/1190000009017259

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜在线一区二区| 国产精品7m凸凹视频分类| 日韩一区二区免费看| 亚洲激情精品| 亚洲午夜久久| 国产日韩欧美一区在线| 国产精品极品在线观看| 麻豆精品视频在线| 久久久久久色 | 日韩国产在线观看一区| 蜜桃视频第一区免费观看| 亚洲另类黄色| 国产日韩一区二区三区在线播放| 国产精品久久久久久久免费软件| 国产aⅴ精品一区二区四区| 国产不卡人人| 先锋影音久久久| 欧美视频久久| 日韩国产欧美| 中文字幕一区二区三区四区久久| 国产精品自在| 群体交乱之放荡娇妻一区二区| 中文在线不卡| 欧美精品三级在线| 精品国产麻豆| 一区免费视频| 国产欧美另类| 欧美福利专区| 欧美日韩一区自拍| 日韩在线免费| 欧美在线黄色| 色综合www| 亚洲区欧美区| 亚洲三级欧美| 欧美一区影院| 欧美日韩国产亚洲一区| 国产精品一页| 亚洲精品成人| 国产精品久久久久久av公交车| 蜜桃精品在线| 欧美欧美黄在线二区| 久久久久美女| 麻豆国产91在线播放| 香蕉精品视频在线观看| 里番精品3d一二三区| 亚洲欧美久久| 欧美成人基地| 麻豆精品视频在线观看免费| 美女精品在线观看| 亚洲成人二区| 久久精品网址| 日本欧美久久久久免费播放网| 国内精品福利| 色综合狠狠操| 日韩激情中文字幕| av亚洲免费| 国产不卡精品| 欧美亚洲福利| 中文字幕免费精品| 国内亚洲精品| 精品视频在线一区二区在线| 亚洲精品婷婷| 日韩午夜黄色| 欧美一区二区性| 精品久久中文| 国产欧美日韩精品高清二区综合区| 蜜桃伊人久久| 日韩亚洲在线| 欧美不卡高清| 黑人精品一区| 国产不卡精品在线| 免费日韩一区二区三区| 日本国产欧美| 亚洲欧洲美洲国产香蕉| 黄色欧美日韩| 午夜国产一区二区| 婷婷综合社区| 韩日一区二区三区| 91精品国产成人观看| 蜜桃成人精品| 亚洲精品在线影院| 亚洲午夜天堂| 日韩精品一区二区三区免费观影 | 18国产精品| 日本亚洲欧美天堂免费| 一区二区三区四区精品视频| 热久久国产精品| 男女性色大片免费观看一区二区 | 在线亚洲成人| 老牛影视一区二区三区| 国产一区二区高清| 日韩午夜av| 亚洲专区视频| 欧美日韩精品一区二区三区在线观看| 日韩一区中文| 国产毛片一区二区三区| 欧美在线91| 国产精品久久久久久久久久齐齐| 免费在线亚洲| 国产 日韩 欧美 综合 一区| 国产精品99在线观看| 国产精品99视频| 久久精品影视| 一本一本久久| 少妇高潮一区二区三区99| 婷婷精品在线观看| 国产欧美一区二区三区国产幕精品| 国产精品美女在线观看直播| 国产专区精品| 国产99精品一区| 免费中文字幕日韩欧美| 99视频精品免费观看| 蜜臀va亚洲va欧美va天堂| 日韩美女国产精品| 欧美成人精品午夜一区二区| 高清av一区| 国精品一区二区| 亚洲人妖在线| 久久成人福利| 亚洲成人精品| 日韩欧美2区| 国产aⅴ精品一区二区四区| 欧美天堂视频| 天堂va蜜桃一区二区三区| 欧美日韩一区二区三区不卡视频 | 一区福利视频| 日本久久一区| 国产精品毛片一区二区在线看| 蜜桃tv一区二区三区| 亚洲精品裸体| 国产成人精品亚洲线观看 | 中文一区一区三区免费在线观 | 日av在线不卡| 国产精品极品国产中出| 色综合www| 日韩精选在线| 一区二区三区四区日本视频| 亚洲精品91| 国产精品成人**免费视频| 91精品啪在线观看国产18| 亚洲+小说+欧美+激情+另类| 老鸭窝一区二区久久精品| 91精品福利| 日韩精品第二页| 日韩免费视频| 日本不卡不码高清免费观看| 捆绑调教日本一区二区三区| 蜜桃av一区二区在线观看| 美日韩一区二区三区| 午夜日韩福利| 国产精品久久久久久模特| 激情六月综合| 国产精品亚洲欧美一级在线| 一区在线免费| 精品久久网站| 日韩国产精品久久久久久亚洲| 蜜桃视频在线网站| 欧美亚洲综合视频| 亚洲小说欧美另类婷婷| 国产精品久久久久久久久免费高清| 亚洲黄色在线| 久久三级毛片| 亚洲va久久| 91精品国产乱码久久久久久久| 97久久超碰| 国产精品毛片在线看| 日韩.com| 国产欧美另类| 日韩中文字幕一区二区三区| 日韩欧美午夜| 国产精品手机在线播放| 日韩精品一级中文字幕精品视频免费观看| 国产在线观看www| 久久国产婷婷国产香蕉| 欧美理论视频| 另类中文字幕国产精品| 精品伊人久久| 欧美天堂一区二区| 日韩影院在线观看| 亚洲国产日韩欧美在线| 婷婷激情一区| 成人三级高清视频在线看| 国产精品毛片视频| 欧美日韩va| 91亚洲精品视频在线观看| 亚洲免费网址| av不卡在线| 美女久久久久| 99精品美女| 在线一区av| 日韩大片在线观看| zzzwww在线看片免费| 精品网站999| 精品国产精品国产偷麻豆| 国产免费播放一区二区| 97se亚洲| 日本少妇精品亚洲第一区| 无码日韩精品一区二区免费| 一区二区电影在线观看| 亚洲一区二区三区高清不卡|