请问栈中的数据可以修改吗?比如数值数据可以修改吗?

var str = "abc";
str[0]; // "a"
str[0] = "d";
str; //仍然是"abc"

字符串是immutable所以不能修改

那么请问栈中的数据可以修改吗?
比如 num=10;num=11;
更改的是栈中的数值10改为11,
还是在栈中新建了一个num=11,将原来的内存删除呢?

已邀请:

lklcool

赞同来自:

Script 的字符串是不可变的(immutable).

  1. str[0] = "d";中的指针[0]可以读取它的值。

补充:

String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。

建议:

以上信息来 http://www.w3school.com.cn/jsref/jsref_obj_string.asp
遇到你感觉比较基础的问题,多查文档。

加油!

应该是新创建的

qudanjiang

赞同来自:

javascript中的string类型是借鉴于Java中的string类型,一旦string的字面量被声明,就不可更改

wyfwz888

赞同来自:

我的理解是

var str = "abc";//创建了一个js中原始值string类型,而原始值是不可变的
str[0] = "d";//这句是典型的引用对象属性的语法,我们可以这样理解,str实际上是不可变的,但是你这样
书写,会造成  strTemp = new String(str);被创建,也就是临时对象创建,并且赋值strTemp[0] = "d";
之后立即销毁。
也就是你要记住一点,js中原始值是不可变的。
对象是可变的。

要回复问题请先登录注册