[javascript] JavaScript에서 null, undefined 또는 blank 변수를 확인하는 표준 함수가 있습니까?

변수가 그렇지 않은하는 가치와 보장하지만이 수표를 가지고있는 보편적 인 자바 스크립트 기능이 있습니까 undefined또는 null? 이 코드가 있지만 모든 경우에 해당되는지 확실하지 않습니다.

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



답변

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

if( value ) {
}

로 평가됩니다 true경우 value입니다 하지 :

  • 없는
  • 찾으시는 주소가 없습니다
  • NaN
  • 빈 문자열 ( “”)
  • 0
  • 그릇된

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

당신이하지 않으면 또한, 알고 변수가 존재하는지 여부 (이 경우 수단은 것을 선언 ) 당신은 확인해야 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인지 확인하는 자세한 방법은 다음과 같습니다.

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

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

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


답변

function isEmpty(value){
  return (value == null || value.length === 0);
}

이것은에 대한 true를 반환합니다

undefined  // Because undefined == null

null

[]

""

함수 length는 선언 된 매개 변수의 수 이므로 인수 함수 가 없습니다.

후자의 범주를 허용하지 않으려면 빈 문자열 만 확인하면됩니다.

function isEmpty(value){
  return (value == null || value === '');
}


답변

이것은 가장 안전한 검사이며 여기에 정확하게 게시 된 것을 보지 못했습니다.

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

이 정의되지 않은 경우 와 다음 중 하나 를 다룹니다 .

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

편집 : 엄격한 평등 (! ==)으로 변경되었습니다. 지금은 표준이기 때문입니다.)


답변

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

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 (스트로 맨) 제안입니다.” – Simon Kjellberg. 저자는 왕의 승천을 받기위한이 아름다운 제안에 대한지지를 추가하기를 원합니다.


답변

최고 등급의 첫 번째 답변이 잘못되었습니다. 값이 정의되어 있지 않으면 최신 브라우저에서 예외가 발생합니다. 다음을 사용해야합니다.

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

또는

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


답변

이 상태 확인

if (!!foo) {
    //foo is defined
}

당신이 필요한 전부입니다.