let c={
name: '我的對(duì)象'
}
let d=c;
console.log(c, d); // {name: "我的對(duì)象"} {name: "我的對(duì)象"}
d.name="我是改變后的對(duì)象";
console.log(c, d); // {name:"我是改變后的對(duì)象"}{name:"我是改變后的對(duì)象"}
復(fù)制代碼
一次輸出c和b是c對(duì)象的原始值,后面我們改變了b對(duì)象下的name,第二次輸出發(fā)現(xiàn)兩個(gè)都被改變了,那為什么a也會(huì)被改變呢?
打開(kāi)瀏覽器內(nèi)存,可以看到一堆內(nèi)容,我們過(guò)濾掉其他無(wú)用的,只選取string類(lèi)型下面的數(shù)據(jù),發(fā)現(xiàn)b所修改的內(nèi)存信息就顯示在第二個(gè),點(diǎn)擊詳情會(huì)看到下面紅色框里面的內(nèi)容。
d in system / Context @130419
c in system / Context @130419
復(fù)制代碼
后面的@130419就是內(nèi)存的地址,我們發(fā)現(xiàn)d和c的內(nèi)存地址只是一樣的。
上面是對(duì)象類(lèi)型的引用,當(dāng)引用對(duì)象修改之后被引用對(duì)象也會(huì)被修改。那我們?cè)囋嚳椿绢?lèi)型會(huì)不會(huì)被修改!
let a="我是a";
let b=a;
console.log(a, b); // 我是a 我是a
b="我是b,我變了";
console.log(a, b); // 我是a 我是b,我變了
復(fù)制代碼
輸出結(jié)果是給b賦值了"我是b,我變了"之后,a并沒(méi)有被修改。那我們看看內(nèi)存發(fā)生了什么變化? 在內(nèi)存頁(yè)面我們?cè)傩陆ㄒ粋€(gè)快照,結(jié)果如下:
https://www.tuicool.com/articles/bmY7Brr
值傳值: 將一個(gè)變量的值拷貝一份賦給另一個(gè)變量。
如果這個(gè)變量的值修改的話不會(huì)影響到另外一個(gè)變量, 這兩個(gè)變量之間沒(méi)有任何聯(lián)系。
<script type="text/javascript">
var num1=500
var num2=num1;
num2=40;
alert(num1); // 500;
</script>
引用傳址:將一個(gè)變量的地址賦給另一個(gè)變量。
如果這個(gè)變量的值有修改的話那么另外一個(gè)變量將同時(shí)受到影響, 將一個(gè)變量的內(nèi)存地址賦值給另外一個(gè)變量, 這兩個(gè)變量同時(shí)指向同一個(gè)內(nèi)存地址,
這兩個(gè)變量是有聯(lián)系的。
<script type="text/javascript">
var arr1=[3, 5, 7, 8, 10, 11];
var arr2=arr1;
arr2[0]=13;
alert(arr1); //[13, 5, 7, 8, 10, 11]
</script>
在javascript中基本數(shù)據(jù)類(lèi)型的賦值操作都是賦值傳值;復(fù)合數(shù)據(jù)類(lèi)型的賦值都是引用傳址。
C語(yǔ)言中,賦值運(yùn)算符和賦值表達(dá)式是程序中常見(jiàn)的一種操作形式。它們用于將一個(gè)值賦給變量,是實(shí)現(xiàn)變量賦值和更新的基本手段。本文將深入介紹C語(yǔ)言中的賦值運(yùn)算符和賦值表達(dá)式,包括常見(jiàn)的賦值運(yùn)算符、賦值表達(dá)式的使用方法、運(yùn)算規(guī)則和實(shí)際應(yīng)用場(chǎng)景,以幫助讀者更好地理解和掌握這一重要概念。
以下是我整理的關(guān)于C語(yǔ)言的一些入門(mén)級(jí)資料,免費(fèi)分享給大家:https://m.hqyjai.net/emb_study_blue_short.html?xt=zxy
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。