을 삭제해야합니다 : 속성 만이속성 만 나는 JSLint이 오류를 받고 있어요
을 삭제해야 할 이유는 다음과 같이하지 그것을합니까? 삭제하려고 시도하는 변수가 너무 커서 가비지 수집을 뛰어 넘기를 바랬습니다. 안 괜찮아?
을 삭제해야합니다 : 속성 만이속성 만 나는 JSLint이 오류를 받고 있어요
을 삭제해야 할 이유는 다음과 같이하지 그것을합니까? 삭제하려고 시도하는 변수가 너무 커서 가비지 수집을 뛰어 넘기를 바랬습니다. 안 괜찮아?
delete
은 일반 변수 (VariableObject의 속성)가 아니라 개체의 속성을 삭제합니다.
대신 모든 값을 null
으로 설정할 수 있습니다. 자바 스크립트의 GC는 필요할 때 정리할 것입니다.
그냥 jslint 경고를 제거하려는 경우, 당신이 시도 할 수 있습니다 : 모든 글로벌 변수는 실제로는 전역 객체의 속성 때문에
가var myHugeVariable = ...;
// do stuff with huge variable
delete window.myHugeVariable;
이 작동합니다.
일반적으로 변수를 공개 할 필요가 없습니다. 자바 스크립트 엔진은 자동으로 그 일을합니다.
또는 jslint check를 전달할 수 있도록 변수를 undefined로 설정할 수 있습니다.
var a=11;
a = undefined;
권장하지 않습니다.
변수는 삭제할 수 없으며 개체 속성 만 삭제할 수 있습니다. 그러므로 'var a = 5; delete ;;는 오류를 던지지 않으며 (* strict 모드 *에서 실제로), 아무 것도하지 않습니다 ('delete a;'false'를 반환합니다). 그래서 : 그것은 유효한 코드이지만, 당신이 원하는 것을하지 않습니다, 그래서 그것은 혼란 스럽습니다. –
@FelixKling 아니, 그건 사실이 아니야. 사실 삭제 연산자로 변수를 삭제할 수 있습니다. 테스트 코드를 작성하고 실행할 수 있습니다. 'var a = 11; 경고 (삭제 a); alert (typeof); 은 true 및 "undefined"를 경고합니다. – cuixiping
@cuixiping 펠릭스 클링이 옳다. 'delete'를 사용하여 (로컬) 변수를 삭제할 수 없습니다. 전역 변수는 실제로'window' 객체에 첨부 된 속성이기 때문에 다릅니다. – NullUserException