js es6 delete

2214 단어
머리말
우선 delete 는 nodejs delete 와 달리 무엇이 다른 지 보 세 요.
본문
var test=5;
delete test;
console.log(test);

결 과 는 test 가 아무런 영향 도 받 지 않 고 5 를 출력 할 수 있 습 니 다.하나 더:
var x={y:{z:5}};
var data=x.y;
console.log(x.y);//  {z:5}
delete x.y;
console.log(x);//  {}
console.log(x.y);//  undef
console.log(data);//  {z:5}

그러면 이 럴 때 우리 가 삭제 한 것 은 x 와 y 의 연락 이 고 y 의 메모리 주 소 는 사실 존재 한 다 는 것 을 알 수 있다.delete 가 반환 값 이 있다 는 것 을 알 고 있 습 니 다. 그럼 이렇게 오 세 요. 삭제 에 성 공 했 는 지 확인 하 세 요.
 var test=5;
 var flag=delete test;
 console.log(flag);

이 럴 때 false 로 돌아 가면 성공 하지 못 합 니 다.그렇다면 무엇 을 삭제 할 수 있 는 지, 무엇 을 삭제 할 수 없 는 지 의문 이다.
문제 탐색
추측:
속성 만 삭제 할 수 있 습 니까?그리고 사용자 정의 속성 이 어야 합 니까?
의문: 위 에서 test 를 삭제 할 때 사실은 global 의 속성 이 므 로 사용자 정의 속성 이 성립 되 지 않 습 니 다.
그렇다면 global 이외 의 사용자 정의 속성 을 모두 삭제 할 수 있 습 니까?
var arr = [1,3,4,6,73,2]; 
delete arr[2]; 
console.log(arr.length); // 6 
console.log(arr[2]); //undefiend consoel.log(arr); 
//[ 1, 3, , 6, 73, 2 ]

그러면 실제로 삭 제 된 것 이 메모리 참조 인지, 아니면 포인터 가 undefind 를 가리 키 는 지 볼 수 있 습 니까?
앞의 사례 를 통 해 지침 을 undefind, 즉 초기 화 되 지 않 은 상태 로 가 리 켰 습 니 다.
여기에서 우 리 는 사실 delete 가 원조 와 object 처리 방식 이 다르다 는 것 을 볼 수 있다. 그러면 우 리 는
이 일련의 문 제 를 단일 하 게 처리 할 수 없다.
의문 제기:
도대체 delete 대상 의 속성 을 비 웠 습 니까? 삭제 하 였 습 니까?
여 지 를 보다.
var test={
	k:5
}
var testx=test;
delete test.k;
console.log(test);//{}
console.log(testx);//{}

비어 있 는 것 이 아니 라 삭 제 된 것 을 보 았 다.
다음 암시 적 전역 변수 와 전역 변 수 를 보 여 줍 니 다.
x=6;
var y=7;
delete x;
delete y;
console.log(y);//7
console.log(x);//undefine

표시 되 는 성명 을 삭제 할 수 없습니다.
그러면 마지막 으로 다른 사람의 배열 을 삭제 하 는 예 를 보 겠 습 니 다. 방식 1:
var arr = [1,3,5,21,3,4,53,21,5,2]; 
arr.forEach(function(val,index){ if(val < 10){ delete arr[index]; } }) console.log(arr); //[ , , , 21, , , 53, 21, ,  ] //    filter      [ 21, 53, 21 ];
arr = arr.filter(function(val){return val});

방식 2:
for(var i=0;i

매번 새로운 배열 을 만 들 지 않 아 도 되 기 때문에 방식 1 의 효율 이 더 높다 고 상상 할 수 있다.

좋은 웹페이지 즐겨찾기