亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問棧中的數據可以修改嗎?比如數值數據可以修改嗎?

請問棧中的數據可以修改嗎?比如數值數據可以修改嗎?

弒天下 2018-09-04 09:09:06
var str = "abc";str[0]; // "a"str[0] = "d";str; //仍然是"abc"字符串是immutable所以不能修改那么請問棧中的數據可以修改嗎?比如 num=10;num=11;更改的是棧中的數值10改為11,還是在棧中新建了一個num=11,將原來的內存刪除呢?
查看完整描述

1 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

我的理解是

var str = "abc";//創建了一個js中原始值string類型,而原始值是不可變的

str[0] = "d";//這句是典型的引用對象屬性的語法,我們可以這樣理解,str實際上是不可變的,但是你這樣

書寫,會造成? strTemp = new String(str);被創建,也就是臨時對象創建,并且賦值strTemp[0] = "d";

之后立即銷毀。

也就是你要記住一點,js中原始值是不可變的。

對象是可變的。

這么說吧,我用字符串舉例:

var str = "Hello";//"Hello"是一個字面量,原始值(Primitive Type),我是這樣理解的,有一塊內存存儲"Hello",str是一個變量名而已,用來引用這塊內存,使用它。


var str = "World";//這一句實際上只是改變了引用的位置,因為原始值是不變的,然后假如上面的"Hello",不用的話js的自動垃圾處理回回收的。


查看完整回答
反對 回復 2018-09-30
  • 1 回答
  • 0 關注
  • 1062 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號