변수가 정의되어 있는지 확인하고 싶었습니다. 예를 들어 다음은 정의되지 않은 오류를 발생시킵니다.
alert( x );
이 오류를 어떻게 잡을 수 있습니까?
답변
JavaScript에서 null
객체입니다. 존재하지 않는 것에는 또 다른 가치가 있습니다 undefined
. DOM은 null
문서에서 일부 구조를 찾지 못하는 거의 모든 경우에 대해 반환 하지만 JavaScript 자체에서 undefined
사용되는 값입니다.
둘째, 아닙니다. 직접적으로 동등한 것은 없습니다. 에 대해 구체적으로 확인하려면 다음을 null
수행하십시오.
if (yourvar === null) // Does not execute if yourvar is `undefined`
변수가 존재하는지 확인하려면 try
/ 로만 수행 할 수 있습니다 . 선언되지 않은 변수와 값이 같은 것으로 선언 된 변수를 처리하기 catch
때문 typeof
입니다 undefined
.
하지만, 변수가 선언 된 경우 확인 및 되지 않습니다 undefined
:
if (yourvar !== undefined) // Any scope
이전 에는 변수처럼 typeof
재 할당 할 수 있었으므로 연산자 를 사용하여 정의되지 않은 안전을 검사해야했습니다 undefined
. 옛날 방식은 다음과 같습니다.
if (typeof yourvar !== 'undefined') // Any scope
undefined
재 할당 할 수 있는 문제는 2009 년에 릴리스 된 ECMAScript 5에서 수정되었습니다. 이제 한동안 읽기 전용 이므로 사용하지 않고도 안전하게 사용 ===
하고 !==
테스트 할 수 있습니다 .undefined
typeof
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);
답변
나는 종종 가장 간단한 방법을 사용합니다.
var variable;
if (variable === undefined){
console.log('Variable is undefined');
} else {
console.log('Variable is defined');
}
편집하다:
변수를 초기화하지 않으면 “Uncaught ReferenceError : variable is not defined …”예외가 발생합니다.