ProgramingTip

JavaScript에서 정의되지 않은 변수를 확인하는 방법

bestdevel 2020. 9. 28. 09:38
반응형

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);


또 다른 잠재적 인 "솔루션"은 windowobject- 를 사용하는 을 구석으로입니다. 브라우저에서 참조 오류 문제를 방지합니다.

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

반응형