>  기사  >  웹 프론트엔드  >  Javascript 연구 노트는 Operator_javascript 기술을 삭제합니다.

Javascript 연구 노트는 Operator_javascript 기술을 삭제합니다.

WBOY
WBOY원래의
2016-05-16 18:02:251262검색
1. 구문

삭제 후의 표현식은
var o = {a:1}; delete o.a; o.a는 객체 o의 속성 a에 대한 참조입니다.

별도의 속성 이름은 with 문에서만 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
with(o){
delete a
}


2. 삭제 값
delete는 일반 연산자이며 true 또는 false를 반환합니다. 규칙은 삭제된 개체의 속성이 존재하고 삭제할 수 없는 경우 false를 반환하고, 그렇지 않으면 true를 반환하는 것입니다. 여기서 한 가지 특징은 객체 속성이 존재하지 않는 경우에도 true를 반환하므로 반환 값이 삭제 성공 여부와 완전히 동일하지는 않습니다.

코드 복사 코드는 다음과 같습니다.
var o = {a:1};
delete o.a; //return true
var b = 2;
delete b;//return false, ECMA 규칙 규칙: var 및 함수를 사용하여 선언된 변수는 삭제할 수 없습니다.


3. 삭제가 허용되지 않는 경우
위 예시에서 언급한 var 및 function으로 선언한 변수는 삭제할 수 없으나 암시적 선언은 삭제할 수 있습니다

코드 복사 코드는 다음과 같습니다.
function c(){return 12;}
delete c ;//return false
d = function(){return 12;}
delete d;//return true

프로토타입 체인에서 상속된 속성은 삭제할 수 없지만 삭제할 수는 있습니다. 프로토타입 체인의 속성 삭제

코드 복사 코드는 다음과 같습니다.
function Foo( ){}
Foo.prototype .bar = 42;
var foo = new Foo();
delete foo.bar; // true를 반환하지만 효과가 없습니다.
alert(foo.bar ); // 경고 42, 속성이 상속되었습니다.
delete Foo.prototype.bar; // 프로토타입의 속성 표시줄을 삭제합니다.
alert(foo.bar) // "정의되지 않음" 속성이 있음을 경고합니다. 더 이상 존재하며 상속할 수 없습니다


4. 특수한 경우
코드 복사 코드는 다음과 같습니다.
eval이 실행한 코드에 var, function을 통해 선언한 변수가 있으면 삭제할 수 있습니다.
eval("var a=1"); 🎜>delete a;
alert(a); //정의되지 않은 오류 보고


평가 실행 코드의 클로저 내부에 선언이 이루어진 경우 변수를 삭제할 수 없습니다.
eval(" (function(){var a=1;delete a ; return a;})()");//1

5. 배열 요소 삭제

에서 해당 요소 삭제 배열은 배열의 길이에 영향을 미치지 않습니다

코드 복사 코드는 다음과 같습니다. var arr = ['yuyin','suhuan','baby' ];
delete arr[0];
alert(arr.length);//alert 3


삭제된 키 값은 더 이상 배열에 속하지 않지만 계속 액세스할 수 있으며 해당 값은 정의되지 않습니다.


코드 복사 코드는 다음과 같습니다. var arr = ['yuyin',' suhuan', 'baby'];
delete arr[0];
0 in arr; // false
alert(arr[0]) //정의되지 않음
arr[0] == = 정의되지 않음; //true


키 값을 정의되지 않은


코드 복사와 비교 코드는 다음과 같습니다: var arr = ['yuyin','suhuan','baby']
arr[0] =
0 in arr; true
alert(arr [0]);//undefine
arr[0] === undefine;//true


삭제 작업은 해당 항목만 삭제하는 것을 볼 수 있습니다. 배열의 키 값 속성이기도 합니다. 이 상황은 이해하기 쉽습니다. 키 값을 유지해야 하는 경우 정의되지 않은 할당을 사용할 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.