js es6 delete
우선 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 의 효율 이 더 높다 고 상상 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.