javascript - 해결 - 자바스크립트 빈값 체크




변수가 'undefined'또는 'null'인지 확인하는 방법은 무엇입니까? (17)

jQuery attr() 함수는 빈 문자열이나 실제 값을 반환합니다. null 아니거나 undefined . undefined 가 반환되는 유일한 경우는 selector가 요소를 반환하지 않은 경우입니다.

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

if (!EmpName) { //do something }

변수가 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 인터프리터가 실행을 중단합니다.


jQuery check 요소 not null

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    //do something
}
else{
    //else do something else
}

typeof null을 호출하면 "object"값이 반환됩니다. 특수 값 null은 빈 객체 참조로 간주되기 때문입니다. Safari는 버전 5를, 크롬 버전은 버전 7을 사용하여 일반 표현식에서 typeof를 호출하면 "함수"가 반환되는 반면 다른 모든 브라우저에서는 "객체"가 반환됩니다.


가장 좋은 방법은:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}

경우에 따라 undefined 값을 변경할 수도 있습니다. 이들은 일반적으로 드물기는하지만 때로는 undefined 값을 실제로 사용하지 않는 것이 좋습니다.

결과적으로 쓰기가 더 빠르기 때문에 빈 배열의 첫 번째 값을 보는 undefined 대한 바로 가기를 사용하는 데 익숙해졌습니다. 이 값은 undefined 프리미티브 값으로 보장되며 [][0] 하여 액세스 할 수 있습니다.

이 검사는 undefinednull 을 모두 찾습니다.

다음은 그 예입니다.

(function(undefined){
    var foo = { baz: null };
    console.log(foo.bar === undefined); //false
    console.log(foo.bar == [][0]); //true
    console.log(foo.baz == [][0]); //true
}(50))


나는 원래 게시물이 JQuery를 사용하고있는 것을 본다. 그래서 저는 JQuery를 통해 과거에 사용한 것을 추가하고 있습니다. 일반적으로 이러한 검사를 수행 할 때 반드시 해당 값이 null인지 또는 정의되지 않았는지 확인하지는 않습니다. 더 많은 것 같이 "거기에 가치가있어서 행동을 취할 수 있습니다.". 그래서 나는 다음을 사용합니다. 모든 유형을 시도하지는 않았지만 null 및 undefined 모두에 대해 작동하는 것으로 알고 있습니다. 또한 객체와 배열 (빈 버전은 true를 반환합니다). 물론 변수가 존재하지 않는다면 예외가 발생하지만 솔직히 모든 것을 희생시키지 않으려 고 노력합니다. 그래서 Aerovistae에 동의합니다. 나는 이것을 내 코드에서 알고 싶어하고 건너 뛰고 싶지 않다.

if ($.trim(value) != '') {
   //Do Something
}

나는이 문제가 객체를 null인지를 확인했다.
나는 이것을 단순히 사용한다.

if (object) { Somecode}

if (document.getElementById("enterJob")) 
  document.getElementById("enterJob").className += ' current';

단순히 typeof를 사용하여 값이 정의되지 않았거나 null인지 확인할 수 있습니다.

if(typeof value == 'undefined'){

아래 솔루션을 사용하십시오.

const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);

console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...

다음을 확인할 수 있습니다.

  • 없는
  • 정의되지 않은
  • NaN
  • 문자열 ( "")
  • 0
  • 그릇된

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

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

선언되지 않거나 선언되고 명시 적으로 null 또는 정의되지 않음으로 설정된 모든 변수에 대해 작동해야합니다. 부울 식은 실제 null이 아닌 값이있는 선언 된 변수에 대해 false로 평가되어야합니다.


이것은 매우 오래된 질문이지만이 2 가지 조건을 테스트하는 가장 안전하고 안전한 방법은 값을 문자열로 캐스팅하는 것입니다.

var EmpName = $("div#esd-names div#name").attr('class');

// Undefined check
if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){
    // do something with your code
}

// Nullcheck
if (Object.prototype.toString.call(EmpName) === '[object Null]'){
    // do something with your code
}

크롬 콘솔에서이 테스트를 실행합니다. (void 0)을 사용하면 정의되지 않았 음을 확인할 수 있습니다.

var c;
undefined
if(c === void 0)alert();
// output =  undefined
var c = 1;
// output =  undefined
if(c === void 0)alert();
// output =   undefined
// check c value  c
// output =  1
if(c === void 0)alert();
// output =  undefined
c = undefined;
// output =  undefined
if(c === void 0)alert();
// output =   undefined

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

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

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

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

전문 JS를 작성할 때 형식 평등과 == vs === 의 동작을 이해하는 것은 당연한 것입니다. 따라서 우리는 == 를 사용하고 오직 null 과 비교합니다.

다시 수정

typeof 의 사용을 제안하는 의견은 단순히 잘못되었습니다. 예, 변수가 존재하지 않으면 위의 내 솔루션 ReferenceError가 발생합니다. 이것은 좋은 일입니다. 이 ReferenceError는 바람직합니다. 다른 언어에서 컴파일러 오류가 발생하는 것처럼 코드를 전달하기 전에 실수를 찾아 수정하는 데 도움이됩니다.

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


jQuery 를 사용하기 때문에 단일 함수를 사용하여 변수가 정의되지 않았는지 또는 그 값이 널인지 여부를 판별 할 수 있습니다.

var s; // undefined
jQuery.isEmptyObject(s); // will return true;

s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;

// usage
if(jQuery.isEmptyObject(s)){
    alert('Either variable: s is undefined or its value is null');
}else{
     alert('variable: s has value ' + s);
}

s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;

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

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

  • 없는

  • 정의되지 않은

  • NaN

  • 빈 문자열 ( "")

  • 0

  • 그릇된


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

var x;
if (x === undefined) {
    alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
    alert ("not even declared.")
};

두 번째 것을 사용할 수 있습니다 : 정의와 선언을 모두 확인합니다.





undefined