JavaScript에서 정의되지 않은 변수를 확인하는 방법
변수가 정의되어 있는지 확인하고 싶었습니다. 예를 들어 다음은 정의되지 않은 오류를 발생 시켰습니다.
alert( x );
이 오류를 어떻게 잡을 수 있습니까?
JavaScript에서는 null
객체입니다. 존재하지 않는 것에 대한 또 다른 가치가 있습니다 undefined
. DOM은 null
문서에서 일부 구조를 찾지 못하는 거의 모든 경우에 반환 되지만 자바 스크립트에서 자체 undefined
사용되는 값입니다.
둘째, 동등, 동등 물이 없습니다. 다음을 null
수행하십시오.
if (yourvar === null) // Does not execute if yourvar is `undefined`
변수가 존재하는지 여부 확인 try
/ 로만 수행 할 수 있습니다. 는 선언되지 않은 변수와 값으로 선언 된 변수 를 동등한 취급하기 catch
때문 typeof
입니다 undefined
.
하지만,가 선언 된 변수 경우 확인 및 되지 않습니다 undefined
:
if (typeof yourvar !== 'undefined') // Any scope
이름이있는 변수가있을 가능성이 undefined
있습니다.
if (yourvar !== undefined)
구성원이 독립적으로 존재하는지 알고 싶지만 그 가치가 무엇인지 신경 쓰지 않는 경우 :
if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance
if (yourvar)
변수가 있는지 실제로 테스트하는 유일한 방법 undefined
은 다음을 수행하는 것입니다. undefined는 JavaScript의 객체입니다.
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
변수가없는 솔루션 중 일부는 변수가 정의되지 않은 (예를 들어 NULL 또는 0 값으로) 정의됩니다.
기술적으로 해결책은 다음과 가변합니다.
typeof x === "undefined"
전체 게으르고 사용할 수 있습니다.
x == null
그러나 정의되지 않은 변수 x와 null을 포함하는 변수 x 모두 true를 반환 할 수 있습니다.
더 나은 더 짧은 버전은 다음과 가변합니다.
if (!x) {
//Undefined
}
또는
if (typeof x !== "undefined") {
//Do something since x is defined.
}
나는 자주했다 :
function doSomething(variable)
{
var undef;
if(variable === undef)
{
alert('Hey moron, define this bad boy.');
}
}
삼항 조건부 연산자를 사용할 수도 있습니다.
var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);
//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);
또 다른 잠재적 인 "솔루션"은 window
object- 를 사용하는 을 구석으로입니다. 브라우저에서 참조 오류 문제를 방지합니다.
if (window.x) {
alert('x exists and is truthy');
} else {
alert('x does not exist, or exists and is falsy');
}
나는 종종 가장 간단한 방법을 사용합니다.
var variable;
if (variable === undefined){
console.log('Variable is undefined');
} else {
console.log('Variable is defined');
}
편집하다 :
"Uncaught ReferenceError : 변수가 정의되지 않았습니다 ..."발생합니다.
는 오류 x
존재하지 않는다는 것을 알려줍니다 ! 값 이 할당 되는 것과는 다른 선언 되지 않았습니다 .
var x; // declaration
x = 2; // assignment
을 선언 x
하면 오류가 발생하지 않습니다. 존재 /되었지만 값이 선언 할당되지 undefined
않았기 때문에 경고 x
가-display됩니다.
변수가 선언되었는지 확인하려면을 사용할 수 있습니다 typeof
. 변수가 있는지 확인하는 다른 방법은 처음에 발생한 것과 동일한 오류를 발생시킵니다.
if(typeof x !== "undefined") {
alert(x);
}
에 저장된 값의 유형을 확인합니다 x
. 그것은 단지 반환 undefined
할 때 x
이 경우 선언되지 않았거나 있다 선언 아직 할당되지 않았습니다.
다음과 같이하십시오.
function isNotDefined(value) {
return typeof value === "undefined";
}
다음과 같이 부릅니다.
isNotDefined(undefined); //return true
isNotDefined('Alireza'); //return false
undefined
다음과 같이 확인할 수 있습니다
var x;
if (x === undefined) {
alert("x is undefined");
} else {
alert("x is defined");
}
수락 된 답변이 맞습니다. 옵션을 하나 더 추가하고 싶었습니다. try ... catch
블록을 사용하여이 상황을 처리 할 수도 있습니다 . 이상한 예 :
var a;
try {
a = b + 1; // throws ReferenceError if b is not defined
}
catch (e) {
a = 1; // apply some default behavior in case of error
}
finally {
a = a || 0; // normalize the result in any case
}
인식 catch
은 블록 레벨 범위를 생성 같은 비트 지저분 블록. 물론이 예제는 질문에 답하기 위해 매우 단순화되어 있으며 오류 처리의 모범 사례를 다루지는 않습니다.).
void
운영자 반환 undefined
, 인수 / 표현은 전달. 따라서 결과에 대해 테스트 할 수 있습니다 (실제로 일부 minifier 는 몇 개의 문자를 저장하기 위해 코드를에서 undefined
로 변경합니다 void 0
)
예를 들면 :
void 0
// undefined
if (variable === void 0) {
// variable is undefined
}
변수가 선언되었는지 확인하기 위해 작은 함수를 사용합니다. 이렇게하면 자바 스크립트 파일의 혼란을 줄일 수 있습니다. 변수가 존재할뿐만 아니라 값도 할당되었는지 확인하기 위해 값에 대한 검사를 추가합니다. 두 번째 조건은 변수가 정의되었지만 인스턴스화되지 않은 경우 (아래 예제 참조) 코드에서 해당 값을 참조하려고하면 여전히 오류가 발생하기 때문에 변수가 인스턴스화되었는지 여부를 확인합니다.
인스턴스화되지 않음- var my_variable;
인스턴스화 됨-var my_variable = "";
function varExists(el) {
if ( typeof el !== "undefined" && typeof el.val() !== "undefined" ) {
return true;
} else {
return false;
}
}
그런 다음 조건문을 사용하여 변수가 다음과 같이 정의되고 인스턴스화되었는지 테스트 할 수 있습니다.
if ( varExists(variable_name) ) { // checks that it DOES exist }
또는 그것이 정의되고 인스턴스화되지 않았는지 테스트하기 위해 ...
if( !varExists(variable_name) ) { // checks that it DOESN'T exist }
참고 URL : https://stackoverflow.com/questions/858181/how-to-check-a-not-defined-variable-in-javascript
'ProgramingTip' 카테고리의 다른 글
클래스가있는 첫 번째 요소에 대한 CSS 선택기 (0) | 2020.09.28 |
---|---|
출력을 파일 및 stdout으로 리디렉션하는 방법 (0) | 2020.09.28 |
한 div를 다른 div 위에 기계하는 방법 (0) | 2020.09.28 |
임의의 영숫자 노드를 생성해야합니까? (0) | 2020.09.28 |
Git : 로컬 브랜치 만 비용은 어떻게합니까? (0) | 2020.09.28 |