Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
let c={
name: '我的對象'
}
let d=c;
console.log(c, d); // {name: "我的對象"} {name: "我的對象"}
d.name="我是改變后的對象";
console.log(c, d); // {name:"我是改變后的對象"}{name:"我是改變后的對象"}
復制代碼
一次輸出c和b是c對象的原始值,后面我們改變了b對象下的name,第二次輸出發現兩個都被改變了,那為什么a也會被改變呢?
打開瀏覽器內存,可以看到一堆內容,我們過濾掉其他無用的,只選取string類型下面的數據,發現b所修改的內存信息就顯示在第二個,點擊詳情會看到下面紅色框里面的內容。
d in system / Context @130419
c in system / Context @130419
復制代碼
后面的@130419就是內存的地址,我們發現d和c的內存地址只是一樣的。
上面是對象類型的引用,當引用對象修改之后被引用對象也會被修改。那我們試試看基本類型會不會被修改!
let a="我是a";
let b=a;
console.log(a, b); // 我是a 我是a
b="我是b,我變了";
console.log(a, b); // 我是a 我是b,我變了
復制代碼
輸出結果是給b賦值了"我是b,我變了"之后,a并沒有被修改。那我們看看內存發生了什么變化? 在內存頁面我們再新建一個快照,結果如下:
https://www.tuicool.com/articles/bmY7Brr
值傳值: 將一個變量的值拷貝一份賦給另一個變量。
如果這個變量的值修改的話不會影響到另外一個變量, 這兩個變量之間沒有任何聯系。
<script type="text/javascript">
var num1=500
var num2=num1;
num2=40;
alert(num1); // 500;
</script>
引用傳址:將一個變量的地址賦給另一個變量。
如果這個變量的值有修改的話那么另外一個變量將同時受到影響, 將一個變量的內存地址賦值給另外一個變量, 這兩個變量同時指向同一個內存地址,
這兩個變量是有聯系的。
<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中基本數據類型的賦值操作都是賦值傳值;復合數據類型的賦值都是引用傳址。
C語言中,賦值運算符和賦值表達式是程序中常見的一種操作形式。它們用于將一個值賦給變量,是實現變量賦值和更新的基本手段。本文將深入介紹C語言中的賦值運算符和賦值表達式,包括常見的賦值運算符、賦值表達式的使用方法、運算規則和實際應用場景,以幫助讀者更好地理解和掌握這一重要概念。
以下是我整理的關于C語言的一些入門級資料,免費分享給大家:https://m.hqyjai.net/emb_study_blue_short.html?xt=zxy
*請認真填寫需求信息,我們會在24小時內與您取得聯系。