[javascript] 변수가 ‘정의되지 않음’인지 ‘널’인지 어떻게 알 수 있습니까?

변수가 undefined또는 인지 어떻게 알 수 null있습니까?

내 코드는 다음과 같습니다.

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  // DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

그러나이 작업을 수행하면 JavaScript 인터프리터가 실행을 중단합니다.



답변

추상 항등 연산자 의 품질을 사용하여이를 수행 할 수 있습니다 .

if (variable == null){
    // your code here.
}

때문에 null == undefined사실, 위의 코드를 모두 잡을 것 null등을 undefined.


답변

동시에 잡는 표준 방법 은 다음 nullundefined같습니다.

if (variable == null) {
     // do something 
}

-보다 명확하지만 덜 간결한 것과 100 % 동일합니다.

if (variable === undefined || variable === null) {
     // do something 
}

전문 JS를 작성할 때 유형 평등과 ==vs 의 동작을=== 이해할 수 있습니다. 따라서 우리는를 사용 ==하고 비교합니다 null.


다시 편집

사용을 제안하는 의견 typeof은 단순히 잘못되었습니다. 예, 위의 솔루션은 변수가 존재하지 않으면 ReferenceError를 발생시킵니다. 이것은 좋은 것입니다. 이 ReferenceError는 바람직합니다. 컴파일러 오류가 다른 언어에서와 같이 코드를 제공하기 전에 실수를 찾아서 수정하는 데 도움이됩니다. 제어 할 수없는 입력으로 작업하는 경우 try/를 사용하십시오 catch.

코드에서 선언되지 않은 변수에 대한 참조가 없어야합니다.


답변

위의 답변을 결합하면 가장 완벽한 답변은 다음과 같습니다.

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

이것은 선언되지 않았거나 선언되고 명시 적으로 null 또는 undefined로 설정된 변수에 대해 작동해야합니다. 실제 널이 아닌 값을 갖는 선언 된 변수에 대해 부울 표현식은 false로 평가되어야합니다.


답변

if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}


답변

if (typeof EmpName != 'undefined' && EmpName) {

값이 아닌 경우 true로 평가됩니다.

  • 없는

  • 찾으시는 주소가 없습니다

  • NaN

  • 빈 문자열 ( “”)

  • 0

  • 그릇된


답변

jQuery attr()함수는 빈 문자열 또는 실제 값을 반환합니다 (그리고 never null또는 undefined). 그것이 반환하는 유일한 시간 undefined은 선택기가 요소를 반환하지 않은 경우입니다.

따라서 빈 문자열에 대해 테스트 할 수 있습니다. 또는 빈 문자열, null 및 undefined가 false이므로이 작업을 수행 할 수 있습니다.

if (!EmpName) { //do something }


답변

이를 위해 내 자신의 기능을 작성했습니다. JavaScript가 이상합니다.

말 그대로 무엇이든 사용할 수 있습니다. (이것은 변수에 사용 가능한 값이 포함되어 있는지 확인 하지만이 정보는 일반적으로 필요하기 때문에 게시 할 가치가 있다고 생각합니다). 메모를 남겨 두십시오.

function empty(v) {
    let type = typeof v;
    if (type === 'undefined') {
        return true;
    }
    if (type === 'boolean') {
        return !v;
    }
    if (v === null) {
        return true;
    }
    if (v === undefined) {
        return true;
    }
    if (v instanceof Array) {
        if (v.length < 1) {
            return true;
        }
    } else if (type === 'string') {
        if (v.length < 1) {
            return true;
        }
        if (v === '0') {
            return true;
        }
    } else if (type === 'object') {
        if (Object.keys(v).length < 1) {
            return true;
        }
    } else if (type === 'number') {
        if (v === 0) {
            return true;
        }
    }
    return false;
}

TypeScript와 호환됩니다.


이 함수는 PHP 함수정확히 같은 기능을 수행해야 empty()합니다 (참조 RETURN VALUES).

고려 undefined, null, false, 0, 0.0, "0" {}, []등의 비 웁니다.

"0.0", NaN, " ", true비어 있지 않은 것으로 간주됩니다.