> 웹 프론트엔드 > JS 튜토리얼 > 어레이와 객체를 ===를 비교할 수없는 이유는 무엇입니까?

어레이와 객체를 ===를 비교할 수없는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-29 20:37:08
원래의
510명이 탐색했습니다.

Why can’t we compare arrays and objects with === 이 기사에서는 일반적인 JavaScript 질문을 탐구합니다. 어레이와 객체를 비교할 때 엄격한 평등 연산자 ()가 예상대로 작동하지 않는 이유. 우리는이 행동을 이해하기 위해 JavaScript의 내부 작업을 탐구 할 것입니다.

. JavaScript는 원시적 데이터 유형과 비-프리맨티 데이터 유형을 구별합니다. 원시 유형 (부울, 널, 정의되지 않은 문자열, 숫자)은 가치별로 전달되는 반면, 비-프리미셜 유형 (어레이, 함수 및 객체-모든 기술적 객체)은 참조로 전달됩니다.

원시 유형 동작 (Pass By value) === 원시 변수를 선언 할 때 값은 직접 저장됩니다.

비-프리맨티 유형 동작 (참조로 통과) 비-프리미셜 변수는 객체 자체가 아닌 물체의 메모리 위치에 a 참조 를 저장합니다.

처음에는

가 빈 배열을 가리키는 참조 (예 : 메모리 주소 h001)를 보유합니다. 후, H001의 배열이 수정됩니다 참조 복사 를 사용하여 참조 변수를 복사하면 객체의 데이터가 아닌 참조를 복사합니다.

둘 다 와
const name = 'John';
const age = 25;
로그인 후 복사
이제 동일한 메모리 위치를 가리 킵니다. 하나를 수정하면 다른 하나를 수정합니다 '파인애플'에 <🎜 🎜>에 추가하는 것도

가 동일한 참조를 공유하기 때문에 변경됩니다. <🎜 🎜> <<> 참조 변수를 재 할당 fruits push() 참조 변수를 재 할당하면 새로운 참조가 생성됩니다

<<> 원래 객체

는 메모리에 남아 있지만 이제 는 이제 새로운 객체 .

<<> 왜

가 배열과 객체로 실패하는지 =

const fruits = [];
fruits.push('Banana');
로그인 후 복사
<🎜 🎜> 연산자는 비-프림 유형에 대한 참조를 비교합니다. 그러므로 : <.>

fruitsyellowFruits

가 동일한 내용을 가지고 있더라도 메모리 주소가 다르기 때문에

. yellowFruits <<> 함수 매개 변수와 순도 <🎜 fruits

기본 값을 함수로 전달하면 값이 복사됩니다. 그러나 통과 객체는 참조를 통과합니다. 이 차이는 순수한 기능을 이해하는 데 중요합니다.

<<> 순수 함수 : 외부 상태를 수정하지 마십시오. 그들은 입력만으로 작동하고 예측 가능한 출력을 생성합니다.

. <🎜 🎜> <<> 불순한 함수 :

전달 된 객체를 인수로 수정하여 함수의 범위 외부의 원래 객체에 영향을 미칩니다.

객체를 수정하는 순수한 함수를 만들려면 수정 전에 사본을 만듭니다.
const fruits = ['Banana'];
const yellowFruits = fruits;
로그인 후 복사

요약에서 { name: 'John' } person 원시 유형은 가치별로 전달됩니다. 비-프리맨티 유형은 참조로 전달됩니다 비-프리맨 유형에 대한 참조를 비교합니다 참조 복사를 이해하는 것은 예측 가능하고 유지 관리 가능한 코드를 작성하는 데 필수적입니다. 순수 함수는 외부 상태를 수정하지 않음으로써 부작용을 피합니다. { name: 'Mary' }

JavaScript 메모리 관리에 대한 더 깊이 다이빙하려면 통화 스택 및 메모리 힙을 탐색하십시오.

위 내용은 어레이와 객체를 ===를 비교할 수없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿