나는 당신이 혼란스러워하는 것을 이해하지 못하기 때문에 어떤 종류의 대답을 기대하는지 정말로 모르겠다. 그러나 여기에 우리가 간다 :
우리는 다음 루프에서 100 번 새로운 참조를 가지겠습니까?
변수는 값의 컨테이너 일뿐입니다. 낮은 수준에서 변수는 기본적으로 메모리 주소 나 레지스터의 레이블입니다. 예 : 변수 x
은 R1
레지스터를 가리킬 수 있습니다.
x++
은 단순히 해당 레지스터에 저장된 숫자를 1
만큼 증가시킵니다. 가정 수 있습니다 우리의 레지스터는 다음과 같이 보았다 :
R1: 5
그것을 증가 후, 하나의 작업을 할 수있는 등 ADD R1 1
, 우리가 얻을 것
R1: 6
즉, 우리는 이전 값을 새로운 값으로 겹쳐 씁니다. 그리고 우리는 여러 번 그렇게합니다.
는 것을는 효율적인가요? 나는 내가 올바르게 보지 않을 것이라고 생각한다.
숫자를 1 씩 증가시키는 것은 얻을 수있는 것처럼 간단합니다.
확실히 높은 수준에서 변경 가능한 숫자를 구현할 수는 있지만 분명히 효율적이거나 단순하지는 않습니다.
"단일 값"값의 변경은 기본적으로 "자리 표시"에서 다른 값으로 바꾸는 것을 의미하기 때문에 변경 가능성은 의미가 없습니다.
목록 및 사전과 같은 다른 값으로 구성된 값이 변경되면 부분이 변경되고 다른 부분은 그대로 유지됩니다.
또한 언어가 참조 유형 데이터 유형 인 경우에만 변경 가능성이 적절합니다. 이를 통해 여러 변수가 데이터 유형의 동일한 값에 대한 참조를 보유 할 수 있음을 의미합니다. 원시 값에 데이터 유형이 참조 형이 아닌 경우
var a = {foo: 42};
var b = a;
b.foo = 21;
console.log(a);
, 값 타입이라, (: 객체는이 작업을 수행 할 수 있도록 자바 스크립트를 참조 형이다 JavaScript)를 사용하면 가변성은 중요하지 않습니다. 왜냐하면 변경이 불변과 구별 될 수 있기 때문입니다. 변경 가능한 가치 형 번호로 다음의 가설적인 시나리오를 고려한다 :이 시나리오에서
var a = MutableNumber(42);
var b = a; // creates a copy of MutableNumber(42) because it's a value type
a.add(1);
console.log(a, b); // would log 43, 42
두 변수가 동일한 가변 개수의 값을 참조하는 것이 불가능 a.add(1)
는 a
에 새로운 값을 할당 구별 할 (즉, a = a + 1
).
숫자 5를 변경할 수 있다면 무엇을 의미할까요? – Pointy
링크 된 질문의 답 읽기 : 숫자 자체는 변경 불가능합니다 (또는 상수라고 할 수 있음). 변수 x는 숫자/상수에 대한 참조입니다. 또한 모든 프로그래밍 언어에서 같다고 말합니다. 그렇지 않으면 숫자를 제거하거나 덮어 쓸 수 있으며 언어가 수행 할 수있는 전체 수학/계산을 망칠 수 있습니다. 권리? –
음, 숫자가 다소 상수라면 왜 값을 다시 넣을 수 있습니까? x = 5, x = 1. – Jamo