programing

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

prostudy 2022. 9. 19. 23:22
반응형

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

변수가 정의되어 있는지 확인하고 싶었습니다.예를 들어, 다음은 정의되지 않은 오류를 발생시킵니다.

alert( x );

어떻게 하면 이 오류를 발견할 수 있을까요?

JavaScript에서는null는 객체입니다.존재하지 않는 것에는 또 다른 가치가 있다.undefinedDOM이 반환됩니다.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

의 문제undefined2009년에 발표된 ECMAScript 5에서는 재배정이 수정되었습니다.이제 안전하게 사용할 수 있습니다.===그리고.!==검사하다undefined사용하지 않고typeof~하듯이undefined한동안 읽기 전용이었습니다.

구성원이 독립적으로 존재하지만 값이 얼마인지 알고 싶지 않은 경우:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

변수가 truthy인지 여부를 확인하려면 다음 절차를 수행합니다.

if (yourvar)

원천

변수가 다음과 같은지 여부를 실제로 검정할 수 있는 유일한 방법은undefined다음 작업을 수행합니다."defined"는 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.');
    }
}

네크로맨싱에 대해 죄송합니다.이 답변의 대부분은 '정의되지 않음'과 '정의되지 않음'을 혼동하고 있습니다.

  1. 정의되지 않음 - 변수가 선언되었지만 값이 정의되지 않았습니다.

  2. 정의되지 않음 - 변수가 선언되지도 않았습니다.

두 가지 경우를 모두 확인하는 유일한 안전한 방법은 사용입니다.typeof myVar === 'undefined'

myVar === undefined(1)을 사용하다「myVar is defined」는, 「myVar is not defined」라고 하는 경우는, 번호 not defined」라고 합니다.myVar선언도 안 되어 있습니다.OP는 구체적으로 "정의되지 않은" 케이스(2)에 대해 묻습니다.

추신: 현대의 ES6 세계에서 '케이스 2'가 드물어지고 있는 것은 이해하지만, 일부 오래된 레거시 컴포넌트는 여전히 과거에 존재합니다.

오퍼레이터가 반환됩니다.undefined 일부 시 변경 시 코드 변경 시 )에.undefined로로 합니다.void 0

예를 들어 다음과 같습니다.

void 0
// undefined

if (variable === void 0) {
    // variable is undefined
}

는 '오류', '오류', '오류', '오류', '오류'를 .x존재하지도 않아!할당되는 것과는 다른 선언되지 않았습니다.

var x; // declaration
x = 2; // assignment

「 」라고 x에러는 발생하지 않습니다. ''라는 됩니다.undefinedx존재/선언되었지만 값이 할당되지 않았습니다.

하려면 , 을 합니다.typeof변수가 존재하는지 여부를 확인하는 다른 방법은 처음에 받은 것과 동일한 오류를 발생시킵니다.

if(typeof x  !==  "undefined") {
    alert(x);
}

'이러다'에 되어 있는 .x. 그것은 돌아올 뿐이다.undefinedx선언되어 아직 할당되지 않은 경우 OR로 선언되지 않았습니다.

인정된 답변은 정확합니다.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 이 경우에도 하실 수 있습니다.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블록 레벨의 스코프를 작성하기 때문에, 조금 지저분합니다.물론, 이 예에서는, 에러 처리의 베스트 프랙티스는 다루지 않습니다.

하나의 은 '해결법'을 입니다.window 수 있습니다.브라우저에서의 참조 에러 문제를 회피할 수 있습니다.

if (window.x) {
    alert('x exists and is truthy');
} else {
    alert('x does not exist, or exists and is falsy');
}

다음과 같은 작업을 수행합니다.

function isNotDefined(value) {
  return typeof value === "undefined";
}

이렇게 불러주세요.

isNotDefined(undefined); //return true
isNotDefined('Alireza'); //return false

ternary 조건부 연산자를 사용할 수도 있습니다.

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

편집:

변수를 초기화하지 않으면 예외가 "Uncatched ReferenceError: 변수가 정의되지 않았습니다.."

.undefined과 같이

var x; 

if (x === undefined) {
    alert("x is undefined");
} else {
     alert("x is defined");
}

변수가 선언된 것을 확인하기 위해 작은 함수를 사용하여 javascript 파일의 잡동사니를 줄입니다.변수가 존재할 뿐만 아니라 값이 할당되었는지 확인하기 위해 값 체크를 추가합니다.두 번째 조건은 변수가 정의되었지만 인스턴스화되지 않은 경우(아래 예 참조) 코드 내에서 값을 참조하려고 하면 오류가 발생하므로 변수도 인스턴스화되었는지 여부를 확인합니다.

되지 않음 - "Not instantized - " "Not instantized" (인스턴스화되지 않음)var my_variable;- 스턴스 instant instant -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

반응형