JQuery/Javascript : var가 존재하는지 확인
중복 가능:
자바스크립트에서 변수가 정의되어 있는지 확인하려면 어떻게 해야 합니까?
자바스크립트에서 null, undefined, blank 변수를 확인할 수 있는 표준 함수가 있습니까?
저는 두 부분으로 나누어서 나오는 대본이 있습니다.
첫 번째 부분은 다음과 같은 변수를 설정합니다.
var pagetype = "textpage";
두 번째 부분은 간단한 if 문장입니다.
if(pagetype == "textpage") {
//do something
};
이제 두번째 부분인 if문이 제 사이트의 모든 페이지에 나타납니다.그러나 var가 선언된 첫번째 부분은 일부 페이지에만 나타납니다.
var가 없는 페이지에서는 자연스럽게 다음과 같은 오류가 발생합니다.
Uncaught ReferenceError: pagetype is not defined
그래서 제 질문은 자바스크립트나 JQ를 사용하여 var가 존재하는지 여부(데이터가 할당되어 있는 경우에만 해당되지 않음)를 탐지할 수 있는 방법이 있습니까?
나는 단지 다른 if문을 사용할 것이라고 상상하고 있습니다. 예를 들어:
if ("a var called pagetypes exists")....
SO에 대해서는 이와 같은 답변이 많을 것으로 생각되지만 여기 있습니다.
if ( typeof pagetype !== 'undefined' && pagetype == 'textpage' ) {
...
}
사용가능typeof
:
if (typeof pagetype === 'undefined') {
// pagetype doesn't exist
}
당신의 경우, 그리고 다른 모든 것의 99.9%가elclanrs
정답입니다.
근데 왜냐면.undefined
만약 누군가가 초기화되지 않은 변수를 테스트한다면, 는 유효한 값입니다.
var pagetype; //== undefined
if (typeof pagetype === 'undefined') //true
변수가 존재하는지 여부를 100% 신뢰할 수 있는 유일한 방법은 예외를 잡는 것입니다.
var exists = false;
try { pagetype; exists = true;} catch(e) {}
if (exists && ...) {}
하지만 난 절대 이런 식으로 쓰지 않을 겁니다.
존재 여부를 검증하기 위한 두 가지 방법이 있습니다.
a."property" in object
이 방법은 프로토타입 체인에 속성이 있는지 확인합니다.
b.object.hasOwnProperty( "property" )
이 메서드는 속성이 있는지 확인하기 위해 프로토타입 체인 위로 올라가는 것이 아니라 메서드를 호출하는 개체에 있어야 합니다.
var x; // variable declared in global scope and now exists
"x" in window; // true
window.hasOwnProperty( "x" ); //true
만약 우리가 다음 식을 사용하여 테스트한다면 false를 반환할 것입니다.
typeof x !== 'undefined'; // false
조건부 진술을 하기 전에 다음과 같은 작업을 수행할 수 있습니다.
var pagetype = pagetype || false;
if (pagetype === 'something') {
//do stuff
}
try 이외에는 변수가 선언되었는지 여부를 확인할 수 없습니다.신고하지 않은 경우 오류를 발생시킬 수 있습니다.다음과 같은 테스트:
if (typeof varName == 'undefined')
만일의 경우에는 말하지 않습니다varName
는 범위 내의 변수이며, 예를 들어 정의되지 않은 유형의 테스트만 반환됩니다.
var foo;
typeof foo == 'undefined'; // true
typeof bar == 'undefined'; // true
위에서 foo는 선언되었지만 bar는 선언되지 않았다는 것을 알 수 없습니다.다음을 사용하여 전역 변수를 검정할 수 있습니다.in
:
var global = this;
...
'bar' in global; // false
그러나 글로벌 개체는 액세스할 수 있는 유일한 변수 개체*이며, 다른 실행 컨텍스트의 변수 개체에는 액세스할 수 없습니다.
해결책은 항상 적절한 상황에서 변수를 선언하는 것입니다.
- 전역 개체는 실제로 변수 개체가 아니라 전역 변수와 일치하고 액세스 권한을 제공하는 속성을 가지고 있기 때문에 하나처럼 보일 뿐입니다.
언급URL : https://stackoverflow.com/questions/13944100/jquery-javascript-check-if-var-exists
'programing' 카테고리의 다른 글
XElement의 아이들 (0) | 2023.09.27 |
---|---|
Primefaces 3.0 문제.M2 OneMenu 선택Ajax 동작 (0) | 2023.09.27 |
Angular Cli Webpack, 외부 js 파일 추가 또는 번들 방법? (0) | 2023.09.27 |
자바스크립트에서 객체를 만드는 데 가장 좋은 방법은 무엇입니까?객체 속성 앞에 var가 필요합니까? (0) | 2023.09.27 |
데이터베이스에서 상위 테이블과 하위 테이블이란? (0) | 2023.09.27 |