[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
- 그릇된
위 목록은 falsy
ECMA- / 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
}
당신이 필요한 전부입니다.