개체에 대한 액세스 및 배열의 null throw 요소 설정

막심 주코프

아주 간단한 예 :

var a = { id: 5 };
var b = { id: 6 };
var c = { id: 7 };
var arr = [a, b, c];

이제 기능이 있습니다.

function remove(startIndex) {
  // set objects to null from startIndex in array
}

내가 이것을 시도하면 :

arr[0] = null;

그런 다음 나는 :

arr[0] == null // true
a == null // false (i need true)

그래서, 내 질문에, 객체에 액세스하면 컬렉션 (배열 또는 객체)을 던지고 변경할 수 있습니까?

다음과 같이 쓰고 싶지 않습니다.

function remove(startIndex) {
  if(startIndex == 0) { 
    a = null;
    b = null;
    c = null;
  }
  if(startIndex == 1) {
    b = null;
    c = null;
  }
  if(startIndex == 2) {
    c = null;
  }
}

다음과 같이 작성하기가 훨씬 쉽습니다 (그러나 작동하지 않습니다).

function remove(startIndex) {
  for(var i = startIndex; i<arr.length; i++) arr[i] = null;
}
무 타히르

작성중인이 코드로 무엇을 목표로하는지 정확히 모르겠지만 Javascript 작동 방식은 다음과 같습니다.

값으로 변수를 인스턴스화 할 때마다 { id: 10 }. 그 객체는 메모리에 저장되고 참조 는 변수로 다시 반환됩니다 a.

이제라고 말하면 var b = a;동일한 참조가 이제 variable에 전달됩니다 b. 이제 Javascript 런타임은 객체를 참조하는 두 개의 변수가 있음을 알고 있습니다 { id: 10 }.

이제 더 이상 변수를 유지하고 싶지 b않으므로 작성 b = null;합니다. 객체가 삭제되었다고 생각하지만 자바 스크립트 런타임은 객체 { id: 10 }하나의 참조 (즉, 변수) 있음을 알고 a있습니다. 따라서 { id: 10 }메모리에서 제거되지 않습니다 .

당신은 또한 다음과 같이 작성할 경우, a = null;다음, 거기에 제로 참조하고, 자바 런타임의 가비지 콜렉터는 결국 메모리에서 개체를 제거하기 얻을 것이다.

이 모든 것은 더 이상의 관리 없이는 원하는 것을 달성 할 수 없다는 것을 이해하게하는 것입니다.

당신이 정말로 원하는 경우 a, b, cnull, 당신은 명시 적으로 자신의 값을 설정하는 코드 작성해야합니다 null너무합니다. 마찬가지로 a = arr[0]; b = arr[1]; c = arr[2];배열이 변경 될 때마다. 당신은 할 수있는 eval문을 등 손으로 변수를 작성하고, 그 중 루프를하지에 일부 문자열 템플릿을하지만, 당신은 단지 세 개의 변수가 있다면 그게 가치가 없어.

도움이 되었기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

배열의 특정 요소에 대한 액세스

분류에서Dev

부모 구성 요소의 개체 액세스 및 수정

분류에서Dev

Bash에서 정수 배열의 두 요소 액세스 및 추가

분류에서Dev

세 개의 요소에 대한 배열 정렬

분류에서Dev

IBOutletCollection의 요소에 대한 액세스

분류에서Dev

Anko-gridLayout의 요소에 대한 행 및 열 값 설정

분류에서Dev

미리 정의 된 배열의 개체 액세스 및 변경

분류에서Dev

XML 파일의 요소에 대한 액세스 및 해당 경로-PERL

분류에서Dev

세션 개체 내의 배열 요소에 액세스

분류에서Dev

세션 개체 내의 배열 요소에 액세스

분류에서Dev

행렬 "v (i)"및 셀형 배열 "v {i}"에 대한 통합 요소 액세스

분류에서Dev

요청 사양의 요청 개체에 대한 액세스

분류에서Dev

개인 구조체에 대한 액세스가 필요한 .cpp 파일에서 정적 멤버 정의

분류에서Dev

PHP : 배열 내부 개체 내부의 요소에 액세스

분류에서Dev

재귀 배열의 각 요소에 대한 ID 설정

분류에서Dev

클릭 한 요소 jQuery의 소품에 대한 액세스

분류에서Dev

개체 필드에서 순서대로 개체 요소 배열에 액세스 하시겠습니까?

분류에서Dev

JSON 배열의 요소에 액세스

분류에서Dev

개체 소유자의 요소에 액세스하도록 설계

분류에서Dev

다차원 (3D 및 4D) 배열의 요소에 액세스

분류에서Dev

스크린 리더의 요소 (div)에 대한 설명 설정

분류에서Dev

XML에 대한 문자열 및 ASP VBScript의 ID 별 액세스 특정 값

분류에서Dev

객체 배열의 배열 요소에 액세스

분류에서Dev

Jackson-deserialization 중 개체 속성 및 배열 요소에 대해 null 허용 안 함

분류에서Dev

함수 (Javascript) 내부에있는 배열의 각 요소에 대한 액세스 권한 얻기

분류에서Dev

XML 요소가 없으며 null 및 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

분류에서Dev

세 번째 배열에 대한 요소의 배열 합계

분류에서Dev

키에 대한 변수를 사용하여 중첩 된 개체의 요소에 액세스합니까?

분류에서Dev

Angular DOM 개체의 특정 요소에 액세스하는 방법

Related 관련 기사

  1. 1

    배열의 특정 요소에 대한 액세스

  2. 2

    부모 구성 요소의 개체 액세스 및 수정

  3. 3

    Bash에서 정수 배열의 두 요소 액세스 및 추가

  4. 4

    세 개의 요소에 대한 배열 정렬

  5. 5

    IBOutletCollection의 요소에 대한 액세스

  6. 6

    Anko-gridLayout의 요소에 대한 행 및 열 값 설정

  7. 7

    미리 정의 된 배열의 개체 액세스 및 변경

  8. 8

    XML 파일의 요소에 대한 액세스 및 해당 경로-PERL

  9. 9

    세션 개체 내의 배열 요소에 액세스

  10. 10

    세션 개체 내의 배열 요소에 액세스

  11. 11

    행렬 "v (i)"및 셀형 배열 "v {i}"에 대한 통합 요소 액세스

  12. 12

    요청 사양의 요청 개체에 대한 액세스

  13. 13

    개인 구조체에 대한 액세스가 필요한 .cpp 파일에서 정적 멤버 정의

  14. 14

    PHP : 배열 내부 개체 내부의 요소에 액세스

  15. 15

    재귀 배열의 각 요소에 대한 ID 설정

  16. 16

    클릭 한 요소 jQuery의 소품에 대한 액세스

  17. 17

    개체 필드에서 순서대로 개체 요소 배열에 액세스 하시겠습니까?

  18. 18

    JSON 배열의 요소에 액세스

  19. 19

    개체 소유자의 요소에 액세스하도록 설계

  20. 20

    다차원 (3D 및 4D) 배열의 요소에 액세스

  21. 21

    스크린 리더의 요소 (div)에 대한 설명 설정

  22. 22

    XML에 대한 문자열 및 ASP VBScript의 ID 별 액세스 특정 값

  23. 23

    객체 배열의 배열 요소에 액세스

  24. 24

    Jackson-deserialization 중 개체 속성 및 배열 요소에 대해 null 허용 안 함

  25. 25

    함수 (Javascript) 내부에있는 배열의 각 요소에 대한 액세스 권한 얻기

  26. 26

    XML 요소가 없으며 null 및 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

  27. 27

    세 번째 배열에 대한 요소의 배열 합계

  28. 28

    키에 대한 변수를 사용하여 중첩 된 개체의 요소에 액세스합니까?

  29. 29

    Angular DOM 개체의 특정 요소에 액세스하는 방법

뜨겁다태그

보관