>  기사  >  백엔드 개발  >  javascript - 스택의 데이터를 수정할 수 있습니까? 예를 들어 숫자 데이터를 수정할 수 있습니까?

javascript - 스택의 데이터를 수정할 수 있습니까? 예를 들어 숫자 데이터를 수정할 수 있습니까?

WBOY
WBOY원래의
2016-08-23 09:17:491374검색

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

문자열은 변경 불가능하므로 수정할 수 없습니다

그러면 스택의 데이터를 수정할 수 있나요?
예를 들어 num=10; num=11;
변경된 것은 스택의 값 10이 11로 변경된다는 것입니다.
스택 번호=11에 새 메모리가 생성됩니다. 원래 메모리를 삭제하시겠습니까?

답글 내용:

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

문자열은 변경 불가능하므로 수정할 수 없습니다

그러면 스택의 데이터를 수정할 수 있나요?
예를 들어 num=10; num=11;
변경된 것은 스택의 값 10이 11로 변경된다는 것입니다.
스택 번호=11에 새 메모리가 생성됩니다. 원래 메모리를 삭제하시겠습니까?

제가 이해한 바는

<code>var str = "abc";//创建了一个js中原始值string类型,而原始值是不可变的
str[0] = "d";//这句是典型的引用对象属性的语法,我们可以这样理解,str实际上是不可变的,但是你这样
书写,会造成  strTemp = new String(str);被创建,也就是临时对象创建,并且赋值strTemp[0] = "d";
之后立即销毁。
也就是你要记住一点,js中原始值是不可变的。
对象是可变的。</code>
<code>这么说吧,我用字符串举例:
var str = "Hello";//"Hello"是一个字面量,原始值(Primitive Type),我是这样理解的,有一块内存存储"Hello",str是一个变量名而已,用来引用这块内存,使用它。

var str = "World";//这一句实际上只是改变了引用的位置,因为原始值是不变的,然后假如上面的"Hello",不用的话js的自动垃圾处理回回收的。</code>

아직도 이해가 안가신다면 최선을 다해보겠습니다------>JS 본래의 가치의 비밀

함께 발전해 보세요.

스크립트 문자열은 변경할 수 없습니다.

  1. str[0] = "d"의 포인터 [0]은 해당 값을 읽을 수 있습니다.

보충:

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

추천:

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

자!

새로 생성되어야 합니다
javascript - 스택의 데이터를 수정할 수 있습니까? 예를 들어 숫자 데이터를 수정할 수 있습니까?

힙, 스택, 상수 풀을 포함한 메모리 배포. 힙의 공간은 스택의 공간보다 큽니다. 힙에는 일반적으로 객체, 함수 등이 포함됩니다. 선언된 변수는 스택에 배치되며, 일반적으로 일부 일반 문자와 숫자는 상수 풀에 배치됩니다. 그래서 제가 추가하고 싶은 것은 말씀하신 것과는 다른 위치에 저장되어 있는 것들이 있다는 것입니다.

JavaScript의 문자열 유형은 Java의 문자열 유형을 빌려온 것입니다. 문자열 리터럴은 한 번 선언되면 변경할 수 없습니다.

안에 은둔형 변신이 있습니다

javascript - 스택의 데이터를 수정할 수 있습니까? 예를 들어 숫자 데이터를 수정할 수 있습니까?

변수(값)→메모리
숫자 및 불리언 변수에서 (값)은 숫자값이다
문자열, 객체, 배열 등에서 (값)은 메모리를 가리키는 주소란? 비교 대상은 (값)입니다.
변수를 다시 할당하면 (값)이 변경됩니다. 변수를 다른 변수에 할당하면 (값)이 다른 변수로 전송(복사)됩니다.

그림에서
n=10; n=11; n은 변경되지 않습니다.
b=n; 값이 전달되고, n은 변경되지 않습니다.
str= "aa"; str="bb"; str은 변경되지 않고 (값)은 다른 문자열을 가리키도록 변경됩니다.
str2="aa", str2는 str과 다르며 원래 "aa를 가리키지 않습니다. "이지만 새로운 것은 "aa"입니다.
str3=str2; str3의 (값)은 str2와 동일하며 동일한 문자열을 가리킵니다.

문자열은 참조로 복사 및 전달되고 값으로 비교
숫자 및 부울 유형 값(true 및 false)은 값으로 복사, 전달 및 비교
객체, 배열 및 함수가 복사됩니다. , 참조로 통과 및 비교

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.