JavaScript에서 정의되지 않은 변수를 확인하는 방법
변수가 정의되어 있는지 확인하고 싶었습니다.예를 들어, 다음은 정의되지 않은 오류를 발생시킵니다.
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
변수가 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.');
}
}
네크로맨싱에 대해 죄송합니다.이 답변의 대부분은 '정의되지 않음'과 '정의되지 않음'을 혼동하고 있습니다.
정의되지 않음 - 변수가 선언되었지만 값이 정의되지 않았습니다.
정의되지 않음 - 변수가 선언되지도 않았습니다.
두 가지 경우를 모두 확인하는 유일한 안전한 방법은 사용입니다.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
에러는 발생하지 않습니다. ''라는 됩니다.undefined
x
존재/선언되었지만 값이 할당되지 않았습니다.
하려면 , 을 합니다.typeof
변수가 존재하는지 여부를 확인하는 다른 방법은 처음에 받은 것과 동일한 오류를 발생시킵니다.
if(typeof x !== "undefined") {
alert(x);
}
'이러다'에 되어 있는 .x
. 그것은 돌아올 뿐이다.undefined
때x
선언되어 아직 할당되지 않은 경우 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
'programing' 카테고리의 다른 글
구성 요소에서 getter를 사용할 수 있는 경우 v-overlay 값을 변경하려면 어떻게 해야 합니까? (0) | 2022.09.19 |
---|---|
const char*연결 (0) | 2022.09.19 |
관찰 가능한 목록 결합 후 모두 완료될 때까지 기다립니다. (0) | 2022.09.19 |
#1273 – 불명확한 대조: 'utf8mb4_unicode_520_ci' (0) | 2022.09.19 |
SQL LIKE와 IN을 함께 사용 (0) | 2022.09.19 |