javascript - jquery string null check




JavaScript에서 null, undefined 또는 빈 변수를 검사하는 표준 함수가 있습니까? (20)

변수에 값이 있는지 확인하고 변수가 undefined 되지 undefined 거나 null 이 아닌지 확인하는 범용 JavaScript 함수가 있습니까? 나는이 코드를 가지고 있지만, 모든 경우를 다루고 있는지 잘 모르겠습니다.

function isEmpty(val){
    return (val === undefined || val == null || val.length <= 0) ? true : false;
}

가장 좋은 평가를받은 첫 번째 대답은 잘못되었습니다. value가 정의되지 않은 경우 최신 브라우저에서 예외가 발생합니다. 당신은 사용해야합니다 :

if (typeof(value) !== "undefined" && value)

또는

if (typeof value  !== "undefined" && value)

값이 미정도인지, 또는 null가 아닌지를 조사하는 장황한 메소드는 다음과 같습니다.

return value === undefined || value === null;

== 연산자를 사용할 수도 있지만 모든 규칙알아야합니다 .

return value == null; // also returns true if value is undefined

나는 이것이 오래된 질문 인 것을 안다. 그러나 이것은 가장 안전한 수표이며 정확히 여기에 게시 된 것을 본 적이 없다 :

if (typeof value != 'undefined' && value) {
    //deal with value'
};

가치 가 정의되지 않은 경우와 다음 중 어떤 경우에도 적용됩니다.

  • 없는
  • undefined (정의되지 않은 값은 정의되지 않은 매개 변수와 동일하지 않음)
  • 0
  • ""(빈 문자열)
  • 그릇된
  • NaN

추신 : typeof 값 에 엄격한 동등성 필요 없음 ! = 'undefined'


내 경우에는 null, '',! variable로 시도했지만 작동하지 않았습니다.

html 필드에서 텍스트를 가져 오려면 아래 코드를 참조하십시오.

var status=$(this).text(); //for example (for my case)

상태 변수에 값 (텍스트 없음)이 없으면 값 'nvalue'를 상태 변수로 설정하려고했습니다.

다음 코드가 작동했습니다.

if(status == false)
{
   status='novalue';
} 

satus 변수에 대한 텍스트가 발견되지 않으면 위의 코드는 상태 변수에 'novalue'를 할당했습니다.


다음과 같은 기능이 유용 할 수 있습니다.

function typeOf(obj) {
  return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}

또는 ES7 (추가 개선 사항이 있으면 의견을 말하십시오)

function typeOf(obj) {
  const { toString } = Object.prototype;
  const stringified = obj::toString();
  const type = stringified.split(' ')[1].slice(0, -1);

  return type.toLowerCase();
}

결과 :

typeOf(); //undefined
typeOf(null); //null
typeOf(NaN); //number
typeOf(5); //number
typeOf({}); //object
typeOf([]); //array
typeOf(''); //string
typeOf(function () {}); //function
typeOf(/a/) //regexp
typeOf(new Date()) //date
typeOf(new WeakMap()) //weakmap
typeOf(new Map()) //map

"바인드 연산자 (: :)는 ES2016 (ES7)이나 ECMAScript 표준의 이후 버전에 포함되어 있지 않으며 현재이 언어에 도입 된 스테이지 0 (strawman) 제안입니다." - Simon Kjellberg. 저자는 왕의 승천을받는이 아름다운 제안에 대한 그의지지를 더하고 싶다.


당신은 조금 과장하고 있습니다. 변수에 값이 주어지지 않았는지 확인하려면 undefined와 null에 대해서만 확인하면됩니다.

function isEmpty(value){
    return (typeof value === "undefined" || value === null);
}

0 , "" 및 객체 (공백 객체 및 배열조차도)가 유효한 "값"이라고 가정합니다.


변수가 선언되지 않았다면 오류가 발생하기 때문에 함수를 사용하여 undefined를 테스트 할 수 없습니다.

if (foo) {}
function (bar) {}(foo)

foo가 선언되지 않은 경우 둘 다 오류를 생성합니다.

변수가 선언되었는지 여부를 테스트하려면

typeof foo != "undefined"

만약 foo가 선언되었고 그것이 사용할 수있는 값을 가지고 있는지 테스트하고 싶다면

if (typeof foo != "undefined" && foo) {
    //code here
}

불확정 중첩 변수가 정의되지 않았는지 확인합니다.

function Undef(str) 
{
  var ary = str.split('.');
  var w = window;
  for (i in ary) {
    try      { if (typeof(w = w[ary[i]]) === "undefined") return true; }
    catch(e) { return true; }
  }
  return false;
}

if (!Undef("google.translate.TranslateElement")) {

위의 경우 Google Translate 함수 TranslateElement가 있는지 확인합니다. 이것은 다음과 같습니다.

if (!(typeof google === "undefined" 
 || typeof google.translate === "undefined" 
 || typeof google.translate.TranslateElement === "undefined")) {

여기 내 것이 있습니다 - value가 null, undefined 등이거나 공백 (즉 공백 만 포함하는 경우)이면 true를 반환합니다.

function stringIsEmpty(value) {

    return value ? value.trim().length == 0 : true;

}

올시에, 잊어 버린 것은 코드 블록을 랩핑 한 다음 오류를 잡아서 테스트해야한다는 것입니다.

function checkup( t ){
  try{
    for(p in t){
      if( p.hasOwnProperty( t ) ){
        return true;
      }
    }
    return false;
  }catch(e){
    console.log("ERROR : "+e);
    return e;
  }
}

따라서 잠재적 인 문제를 직접 확인하기 만하면됩니다. 간단히 파악한 다음 원하는 방식으로 처리 할 수 ​​있습니다.


이 함수는 empty object {} , empty array [] , null , undefined blank string ""blank string ""

function isEmpty(val) {
  //check for empty object {}, array []
  if (val !== null && typeof val === 'object') {
    if (Object.keys(obj).length === 0) {
      return true;
    }
  }
  //check for undefined, null and "" 
  else if (val == null || val === "") {
    return true;
  }
  return false;
}

var val = {};
isEmpty (val) -> true
val = [];
isEmpty (val) -> true
isEmpty (undefined) -> true
isEmpty (null) -> true
isEmpty ( "") -> true
isEmpty (false) -> false
isEmpty (0) -> false


이것은 아주 간단한 것입니다.

if(data) {
  //Comes inside only if the data is not empty and not null 
}

자바 스크립트 및 jquery에서이 코드 (! (! (변수))) 만 사용하십시오. 자바 스크립트 및 jquery에서는이 코드 (! (! (변수)))를 사용하지 않고 null이 아니고 비어 있지 않고 정의되지 않고 0이 아닌 유효성 검사를위한 4 가지 조건을 모두 확인하기 위해 벨로우즈 코드를 사용할 수 있습니다.

function myFunction() {
    var data;  //The Values can be like as null, blank, undefined, zero you can test

    if(!(!(data)))
    {
        alert("data "+data);
    } 
    else 
    {
        alert("data is "+data);
    }
}


변수truthy 값이 있는지 여부 만 확인할 수 있습니다. 그 의미는

if( value ) {
}

value아닌 경우 true 평가됩니다.

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

위의 목록은 ECMA- / Javascript에서 가능한 모든 falsy 값을 나타냅니다. ToBoolean 섹션의 specification 에서 찾으십시오.

또한 변수가 있는지 여부를 모르는 경우 (즉 선언 된 경우 ) typeof 연산자로 확인해야합니다. 예를 들어

if( typeof foo !== 'undefined' ) {
    // foo could get resolved and it's defined
}

변수 가 적어도 선언되었다고 확신 할 수 있다면 위와 같이 truthy 값이 있는지 직접 확인해야합니다.

추가 정보 : http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html


! 빈 문자열 ( ""), null, undefined, false 및 숫자 0과 NaN을 확인하십시오. 예를 들어 문자열이 비어 있으면 var name = "" 그러면 console.log(!name)true 반환 true .

function isEmpty(val){
  return !val;
}

이 함수는, val 가 하늘의 경우는 null, 정의되어 있지 않은 경우는 false, 수치가 0의 경우는 true를 돌려 줍니다 .


function isEmpty(obj) {
    if (typeof obj == 'number') return false;
    else if (typeof obj == 'string') return obj.length == 0;
    else if (Array.isArray(obj)) return obj.length == 0;
    else if (typeof obj == 'object') return obj == null || Object.keys(obj).length == 0;
    else if (typeof obj == 'boolean') return false;
    else return !obj;
}

공백 문자열을 처리하기위한 트림이있는 ES6에서 :

const isEmpty = value => {
    if (typeof value === 'number') return false
    else if (typeof value === 'string') return value.trim().length === 0
    else if (Array.isArray(value)) return value.length === 0
    else if (typeof value === 'object') return value == null || Object.keys(value).length === 0
    else if (typeof value === 'boolean') return false
    else return !value
}

function isEmpty(val){
    return !val;
}

하지만이 솔루션은 과도하게 설계되었으므로 나중에 busines 모델 요구 사항에 맞게 함수를 수정하지 않으려면 코드에서 직접 사용하는 것이 더 깔끔합니다.

if(!val)...

try{

     let vari = obj.propTest; // obj may be don't have propTest property

        ...
} catch(NullException){
    // do something here
}

try catch를 사용하면 null 검사의 오류를 피할 수있을 것이라고 생각합니다. Angular 또는 JavaScript에서도 null 예외 및 프로세스를 catch하고 있습니다.


var myNewValue = myObject && myObject.child && myObject.child.myValue;

이것은 결코 오류를 던지지 않을 것입니다. myObject , child , 또는 myValue 가 null의 경우, myNewValue 는 null가됩니다. 오류가 발생하지 않습니다.







undefined