itsource

JavaScript에서 정의되지 않은 변수 또는 null 변수를 확인하는 방법은 무엇입니까?

mycopycode 2022. 11. 26. 14:00
반응형

JavaScript에서 정의되지 않은 변수 또는 null 변수를 확인하는 방법은 무엇입니까?

우리는 자바스크립트 코드에 다음과 같은 코드 패턴을 자주 사용하고 있습니다.

if (typeof(some_variable) != 'undefined' && some_variable != null)
{
    // Do something with some_variable
}

같은 효과를 내는 덜 장황한 확인 방법은 없을까?

몇몇 포럼과 문헌에 따르면, 간단히 말해서 다음과 같은 효과가 있을 것이다.

if (some_variable)
{
    // Do something with some_variable
}

안타깝게도 Firebug는 실행 시 오류와 같은 문장으로 평가합니다.some_variable정의되어 있지 않습니다만, 첫 번째 것은 괜찮습니다.파이어버그?아니면 이 두 가지 방법 사이에 정말 어떤 차이가 있습니까?

'을 은 '값'이라고 생각합니다.null ★★★★★★★★★★★★★★★★★」undefined" " specificed" (스위치 정보)

if ( some_variable == null ){
  // some_variable is either null or undefined
}

이 두 줄은 동일합니다.

if ( typeof(some_variable) !== "undefined" && some_variable !== null ) {}
if ( some_variable != null ) {}

주 1

질문에서 언급한 바와 같이 짧은 변형은 다음을 요구합니다.some_variableReferenceError를 참조합니다.그러나 많은 사용 사례에서는 이것이 안전하다고 가정할 수 있습니다.

옵션 인수를 확인합니다.

function(foo){
    if( foo == null ) {...}

기존 개체의 속성 확인

if(my_obj.foo == null) {...}

★★★★★★★★★★★★★★★★.typeof글로벌 할 수 returns "는 선언되지 않은 글로벌 변수를 처리합니다).undefined그러나 알시안데가 설명한 바와 같이 이 사례들은 타당한 이유로 최소한으로 줄여야 한다.

주 2

이 - 훨씬 더 짧은 - 변형은 동일하지 않습니다.

if ( !some_variable ) {
  // some_variable is either null, undefined, 0, NaN, false, or an empty string
}

그렇게

if ( some_variable ) {
  // we don't get here if some_variable is null, undefined, 0, NaN, false, or ""
}

주 3

일반적으로는 다음을 사용하는 것이 좋습니다.=====제안된 솔루션은 이 규칙의 예외입니다.JSHint 구문 검사기에서는eqnull옵션을 선택합니다.

jQuery 스타일 가이드:

==을(를) 위해 엄격한 평등 검사(===)를 사용해야 합니다.유일한 예외는 null을 통해 정의되지 않은 것과 null을 확인하는 경우입니다.

// Check for both undefined and null values, for some important reason. 
undefOrNull == null;

2021-03년 편집:

현재 대부분의 브라우저는 Nullish 병합 연산자()??와 Logical Nullish 할당을 지원합니다.이것에 의해, 변수가 늘 또는 정의되어 있지 않은 경우에 디폴트치를 할당하는 보다 간결한 방법이 가능하게 됩니다.다음은 예를 제시하겠습니다.

if (a.speed == null) {
  // Set default if null or undefined
  a.speed = 42;
}

다음 중 하나의 형식으로 쓸 수 있다

a.speed ??= 42;
a.speed ?? a.speed = 42;
a.speed = a.speed ?? 42;

대소문자를 구분해야 합니다.

  1. 는 수음음음음음음음 variables variables variables variables variables이다.undefined또는 미신고.선언되지 않은 변수에 액세스하면 다음 컨텍스트에서 오류가 발생합니다.typeof.
if(typeof someUndeclaredVar == whatever) // works
if(someUndeclaredVar) // throws error

선언되었지만 초기화되지 않은 변수는 다음과 같습니다.undefined.

let foo;
if (foo) //evaluates to false because foo === undefined
  1. 정의되지 않은 속성:someExistingObj.someUndefProperty 속성은 시키지 않고 .을 반환할 입니다.undefined하면 '부울로 환산하다'로 false신경 안, 신경 안 쓴다면0 ★★★★★★★★★★★★★★★★★」false 를 사용합니다.if(obj.undefProp) 이 으로 한 가 있어요.

    value = obj.prop || defaultValue
    

    '에'는 '만약에'라는 objprop에합니다.value의 경우는 「Default」를 할당합니다.defautValue

    일부에서는 이 동작이 찾기 어려운 오류로 이어지며 대신 오퍼레이터를 사용할 것을 권장합니다.

    value = ('prop' in obj) ? obj.prop : defaultValue
    

null을 normal equality로 체크해도 정의되지 않은 경우 true가 반환됩니다.

if (window.variable == null) alert('variable is null or undefined');

JS 평등

만, 「 」의 는, 「 」가 되는 경우입니다.== ★★★★★★★★★★★★★★★★★」!=사용해야 합니다.

if (val == null) console.log('val is null or undefined')
if (val != null) console.log('val is neither null nor undefined')

다른 비교의 경우 엄격한 대조군(=== ★★★★★★★★★★★★★★★★★」!==을 사용해야 합니다.

ES5 및 ES6와 같은 새로운 JavaScript 표준에서는 다음과 같이 말할 수 있습니다.

> Boolean(0) //false
> Boolean(null)  //false
> Boolean(undefined) //false

모두 false를 반환합니다.이것은 Python의 빈 변수 체크와 비슷합니다.따라서 변수 주위에 조건부 논리를 쓰려면 다음과 같이 하십시오.

if (Boolean(myvar)){
   // Do something
}

여기서 "syslog" 또는 "empty string" 또는 "syslog"는 효율적으로 처리됩니다.

선언되지 않은 변수를 참조하려고 하면 모든 JavaScript 구현에서 오류가 발생합니다.

개체의 속성은 동일한 조건을 따르지 않습니다.개체 속성이 정의되지 않은 경우 해당 개체에 액세스하려고 해도 오류가 발생하지 않습니다.따라서 이 경우 다음을 줄일 수 있습니다.

 if (typeof(myObj.some_property) != "undefined" && myObj.some_property != null)

로.

if (myObj.some_property != null)

에 두고 할 수 점(「」)을 참조해 주세요.window브라우저의 경우) 글로벌 변수에 다음 명령을 사용할 수 있습니다.

if (window.some_variable != null) {
    // Do something with some_variable
}

스코프에서는 의 맨 되어 있는지 에 의해, 「」의 됩니다.이것에 의해, 다음의 반복적인 사용을 절약할 수 있습니다.typeof.

에는 트립 비교기, 즉 JavaScript가 있습니다.== ★★★★★★★★★★★★★★★★★」===.

수,,test(val) for for for for for 를 검사하다null ★★★★★★★★★★★★★★★★★」undefined에는 다음 특성이 있습니다.

 test(null)         => true
 test(undefined)    => true
 test(0)            => false
 test(1)            => false
 test(true)         => false
 test(false)        => false
 test('s')          => false
 test([])           => false

여기 있는 아이디어 중 어떤 것이 실제로 우리의 테스트를 통과하는지 봅시다.

작업 내용:

val == null
val === null || val === undefined
typeof(val) == 'undefined' || val == null
typeof(val) === 'undefined' || val === null

이것들은 동작하지 않습니다.

typeof(val) === 'undefined'
!!val

이러한 접근법의 정확성과 성능을 비교하기 위해 jsperf 엔트리를 작성했습니다.서로 다른 브라우저/플랫폼 간에 충분한 실행이 이루어지지 않았기 때문에 당분간 결과는 단정할 수 없습니다.잠시 시간을 내어 컴퓨터에서 테스트를 실행하십시오.

simple재 at at at at at at at at at at at at at 가 되어 있는 것 같다.val == null이치노을 사용법될 수 .val != null완물보

Array includes() 메서드를 사용하는 다른 방법은 다음과 같습니다.

[undefined, null].includes(value)

완전하고 정확한 답은 단 한 개도 없기 때문에 요약해 보겠습니다.

일반적으로 표현은 다음과 같습니다.

if (typeof(variable) != "undefined" && variable != null)

수 .variable되지 않은 경우가 때문에, 「」는 됩니다.typeof(variable) != "undefined"ReferenceError가 발생합니다.단, 문맥에 따라 표현을 단순화할 수 있습니다.

경우,variable글로벌하게 도입하면, 다음과 같이 간단하게 할 수 있습니다.

if (window.variable != null)

로컬인 경우 이 변수가 선언되지 않은 상황을 피할 수 있으며 다음과 같이 단순화할 수 있습니다.

if (variable != null)

오브젝트 속성인 경우 ReferenceError에 대해 걱정할 필요가 없습니다.

if (obj.property != null)

로, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 , 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우, 이 경우,===== .표현somevar == null 경우 됩니다.undefined ★★★★★★★★★★★★★★★★★」null기타 모든 것에 대해서는 false입니다(변수가 선언되지 않은 경우 오류).

「 」의 !=이치노

최신 에디터에서는 사용 방법에 대해 경고하지 않습니다.== ★★★★★★★★★★★★★★★★★」!=.null이는 거의 항상 바람직한 동작이기 때문입니다.

가장 일반적인 비교:

undeffinedVar == null     // true
obj.undefinedProp == null // true
null == null              // true
0 == null                 // false
'0' == null               // false
'' == null                // false

직접 사용해 보세요.

let undefinedVar;
console.table([
    { test : undefinedVar,     result: undefinedVar     == null },
    { test : {}.undefinedProp, result: {}.undefinedProp == null },
    { test : null,             result: null             == null },
    { test : false,            result: false            == null },
    { test : 0,                result: 0                == null },
    { test : '',               result: ''               == null },
    { test : '0',              result: '0'              == null },
]);

변수가 값을 가지고 있는지 확인할 수 있습니다.의미.

if( myVariable ) {
//mayVariable is not :
//null
//undefined
//NaN
//empty string ("")
//0
//false

}

변수가 존재하는지 여부를 모르는 경우(즉, 선언된 경우) 연산자 유형을 확인해야 합니다.

if( typeof myVariable !== 'undefined' ) {
    // myVariable will get resolved and it is defined
}

당신이 가진 것과 비슷하게, 당신은 다음과 같은 것을 할 수 있다.

if (some_variable === undefined || some_variable === null) { do stuff }

yyy가 정의되지 않았거나 null인 경우 true가 반환됩니다.

if (typeof yyy == 'undefined' || !yyy) {
    console.log('yes');
} else {
    console.log('no');
}

네.

if (!(typeof yyy == 'undefined' || !yyy)) {
    console.log('yes');
} else {
    console.log('no');
}

아니요.

브라우저에서 개발자 도구를 열고 아래 이미지에 표시된 코드를 사용해 보십시오.

img1 img2

이 "If"가 "If"인지 null ★★★★★★★★★★★★★★★★★」undefined값을 변수에 할당하기 전에 Nullish 병합 연산자를 사용할 수 있습니다.caniuse의 데이터에 따르면 브라우저의 약 85%(2021년 1월 기준)에서 지원되어야 한다.연산자의 예를 다음에 나타냅니다.

const a = some_variable ?? '';

빈 다른 이 경우, 「」는 「빈 문자열」(또는 「 디폴트치」)에 할당됩니다.some_variablenull ★★★★★★★★★★★★★★★★★」undefined.

는 사용하며, 사용 예에 가장 합니다. , 다른 는 기본값을 .0 ★★★★★★★★★★★★★★★★★」''.

답변 중 하나에서 언급했듯이 글로벌 범위를 가진 변수를 말하는 경우 운이 좋을 수 있습니다.아시다시피 글로벌하게 정의한 변수는 윈도 오브젝트에 추가되는 경향이 있습니다.이 사실을 활용할 수 있으므로 bleh라는 변수에 액세스한다고 가정하면 이중 반전 연산자(!)를 사용합니다.

!!window['bleh'];

bleh가 선언되지 않고 값이 할당되지 않은 상태에서 false가 반환됩니다.

이를 이해하기 위해 미정의, null, "(공백 문자열도) 변환 시 Javascript Engine에서 반환되는 값을 분석합니다.개발자 콘솔에서 직접 확인할 수 있습니다.

여기에 이미지 설명 입력

모두 false로 변환되고 있는 것을 알 수 있습니다.즉, 이 세 가지 모두 javascript에 의해 '존재 부족'을 상정하고 있습니다.따라서 코드 내의 3가지를 아래와 같이 모두 명시적으로 확인할 필요는 없습니다.

if (a === undefined || a === null || a==='') {
    console.log("Nothing");
} else {
    console.log("Something");
}

그리고 한 가지 더 짚고 넘어갈 게 있어요.

Boolean(0)의 결과는 어떻게 됩니까?

물론 거짓이죠.예상 결과에서 0이 유효한 값일 때 코드에 버그가 생성됩니다.그러니까 코드를 작성할 때 꼭 확인해 주세요.

나는 이 방법을 사용하여 이것을 했다.

ID를 변수에 저장하다

var someVariable = document.getElementById("someId");

그런 다음 if 조건을 사용합니다.

if(someVariable === ""){
 //logic
} else if(someVariable !== ""){
 //logic
}

ES5 또는 ES6에서 여러 번 확인해야 할 경우 다음을 수행합니다.

const excluded = [null, undefined, ''];

if (!exluded.includes(varToCheck) {
  // it will bee not null, not undefined and not void string
}

이것도 좋은 (그러나 장황한) 방법입니다.

if(someObject.someMember ?? null === null) {
  // bladiebla
}

무슨 일이 일어나고 있는지 매우 분명하고 오해하기 어렵다.그리고 그것은 매우 중요할 수 있습니다! :-)

은 「」를 합니다.??operator ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator) )의 가치가someObject.someMembernull ★★★★★★★★★★★★★★★★★」undefined , . . . . . . . .??하면, 이 「이렇게 됩니다」라고 것이 됩니다.null.

는 이, TBH를 선호한다.someObject.someMember == null보다 읽기 쉽고 숙련된 JS 개발자들은 여기서 무슨 일이 일어나고 있는지 알고 있을 것입니다.

let varToCheck = ""; //U have to define variable firstly ,or it throw error
const excluded = [null, undefined, ""];

if (!excluded.includes(varToCheck)) {
  // it will bee not null, not undefined and not void string
  console.log("pass");
} else {
  console.log("fail");
}

예를 들어, 테스트에 대한 vladern의 답변을 복사하려면 "Copy snaptes to answer" 버튼을 클릭하기만 하면 됩니다.

테스트( 「 」 )if (value == null)비일관성)if (value != null)하지 않습니다는 변수의 정의 상태를 테스트하는 것보다 상세하지 않습니다.

if (value) (오류)if( obj.property) 속성)가 부울()로 되어 있는 (또는 객체 속성)의가 발생하는지 false 경고 입니다. 「 」 「 」:)

Ramda를 Ramda를 할 수 .R.isNil(yourValue)로다시

ES5 및 ES6 표준과 미정의 또는 null 또는 0을 비교하는 최선의 방법

 if ((Boolean(some_variable_1) && Boolean(some_variable_2)) === false) {
    // do something
    }

다음 양식의 함수를 정의해야 합니다.

validate = function(some_variable){
    return(typeof(some_variable) != 'undefined' && some_variable != null)
}

두 값 모두 엄격한 비교 연산자를 사용하면 쉽게 구분할 수 있습니다.

샘플 코드:

function compare(){
    var a = null; //variable assigned null value
    var b;  // undefined
    if (a === b){
        document.write("a and b have same datatype.");
    }
    else{
        document.write("a and b have different datatype.");
    }   
}

언급URL : https://stackoverflow.com/questions/2559318/how-to-check-for-an-undefined-or-null-variable-in-javascript

반응형