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 인터프리터가 실행을 중지합니다.
질문자 :sadmicrowave
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
가 true이므로 위의 코드는 null
과 undefined
모두 catch합니다.
null
과 undefined
동시에 잡는 표준 방법은 다음과 같습니다.
if (variable == null) { // do something }
--더 명시적이지만 덜 간결한 것과 100% 동일합니다.
if (variable === undefined || variable === null) { // do something }
전문 JS를 작성할 때 유형 평등과 ==
대 ===
의 동작을 이해하는 것이 당연하게 받아들여집니다. 따라서 우리는 ==
null
과만 비교합니다.
typeof
의 사용을 제안하는 주석은 단순히 잘못된 것입니다. 예, 위의 솔루션은 변수가 존재하지 않으면 ReferenceError를 발생시킵니다. 이것은 좋은 일입니다. 이 ReferenceError는 바람직합니다. 다른 언어에서 컴파일러 오류가 발생하는 것처럼 코드를 제공하기 전에 실수를 찾고 수정하는 데 도움이 됩니다. 제어할 수 없는 입력으로 작업하는 경우 try
/ catch
사용하십시오.
코드에 선언되지 않은 변수에 대한 참조가 없어야 합니다.
위의 답변을 결합하면 가장 완전한 답변은 다음과 같습니다.
if( typeof variable === 'undefined' || variable === null ){ // Do stuff }
이것은 선언되지 않았거나 선언되었고 명시적으로 null 또는 정의되지 않은 변수에 대해 작동해야 합니다. 부울 표현식은 null이 아닌 실제 값이 있는 선언된 변수에 대해 false로 평가되어야 합니다.
if (variable == null) { // Do stuff, will only match null or undefined, this won't match false }
if (typeof EmpName != 'undefined' && EmpName) {
값이 다음이 아닌 경우 true로 평가됩니다.
없는
찾으시는 주소가 없습니다
난
빈 문자열("")
0
거짓
아마도 이것을 하는 가장 짧은 방법은 다음과 같습니다:
if(EmpName == null) { /* DO SOMETHING */ };
다음은 증거입니다.
function check(EmpName) { if(EmpName == null) { return true; }; return false; } var log = (t,a) => console.log(`${t} -> ${check(a)}`); log('null', null); log('undefined', undefined); log('NaN', NaN); log('""', ""); log('{}', {}); log('[]', []); log('[1]', [1]); log('[0]', [0]); log('[[]]', [[]]); log('true', true); log('false', false); log('"true"', "true"); log('"false"', "false"); log('Infinity', Infinity); log('-Infinity', -Infinity); log('1', 1); log('0', 0); log('-1', -1); log('"1"', "1"); log('"0"', "0"); log('"-1"', "-1"); // "void 0" case console.log('---\n"true" is:', true); console.log('"void 0" is:', void 0); log(void 0,void 0); // "void 0" is "undefined"
==
에 대한 자세한 내용이 있습니다.
보너스 : ===
==
보다 더 명확한 이유( agc 답변 참조 )
jQuery attr()
함수는 빈 문자열이나 실제 값을 반환합니다( null
또는 undefined
절대 아님). undefined
반환하는 유일한 경우는 선택기가 요소를 반환하지 않았을 때입니다.
따라서 빈 문자열에 대해 테스트할 수 있습니다. 또는 공백 문자열, null 및 undefined가 false-y이므로 다음과 같이 하면 됩니다.
if (!EmpName) { //do something }
편집 된 답변 : 제 생각에는 아래의 오래된 답변의 기능을 사용해서는 안됩니다. 대신 변수의 유형을 알고 직접 확인을 사용해야 합니다(예: 배열이 비어 있는지 궁금하십니까? if(arr.length===0){}
등을 수행하십시오). 이 답변은 OP의 질문에도 대답하지 않습니다.
나는 이것을 위해 내 자신의 기능을 작성하기 위해 왔습니다. 자바스크립트가 이상합니다.
말 그대로 무엇이든 사용할 수 있습니다. (변수에 사용 가능한 값이 포함되어 있는지도 확인합니다. 그러나 이 정보도 일반적으로 필요하므로 게시할 가치가 있다고 생각합니다.) 메모를 남겨주세요.
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
는 비어 있지 않은 것으로 간주됩니다.
가장 짧고 쉬운:
if(!EmpName ){ // DO SOMETHING }
EmpName이 다음과 같은 경우 true로 평가됩니다.
확인하려는 변수가 전역이면 다음을 수행하십시오.
if (window.yourVarName) { // Your code here }
yourVarName
변수가 존재하지 않는 경우에도 오류가 발생하지 않습니다.
if (window.history) { history.back(); }
window
는 모든 전역 변수를 속성으로 보유하는 객체이며 JavaScript에서는 존재하지 않는 객체 속성에 액세스하려고 시도하는 것이 합법적입니다. history
이 존재하지 않으면 window.history
undefined
반환합니다. undefined
는 false이므로 if(undefined){}
블록의 코드는 실행되지 않습니다.
JavaScript 에서 내 지식에 따라 아래와 같이 undefined , null 또는 빈 변수를 확인할 수 있습니다.
if (variable === undefined){ } if (variable === null){ } if (variable === ''){ }
모든 조건 확인:
if(variable === undefined || variable === null || variable === ''){ }
jQuery 를 사용하고 있기 때문에 단일 함수를 사용하여 변수가 정의되지 않았는지 또는 값이 null인지 확인할 수 있습니다.
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;
방금이 문제가 발생했습니다. 즉 개체가 null인지 확인하는 것입니다.
나는 단순히 이것을 사용합니다 :
if (object) { // Your code }
예를 들어:
if (document.getElementById("enterJob")) { document.getElementById("enterJob").className += ' current'; }
다음을 간단히 사용할 수 있습니다(이 작업을 수행하는 더 짧은 방법이 있다는 것을 알고 있지만 적어도 코드를 보고 있는 다른 사람들에게는 시각적으로 더 쉽게 관찰할 수 있습니다).
if (x === null || x === undefined) { // Add your response code here, etc. }
출처: https://www.growthsnippets.com/how-can-i-determine-if-a-variable-is-undefined-or-null/
jQuery 검사 요소가 null이 아님:
var dvElement = $('#dvElement'); if (dvElement.length > 0) { // Do something } else{ // Else do something else }
확인하는 가장 쉬운 방법은 다음과 같습니다.
if(!variable) { // If the variable is null or undefined then execution of code will enter here. }
아래 솔루션으로:
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...
다음을 확인할 수 있습니다.
변수가 null인지 정의되지 않은지 테스트하려면 아래 코드를 사용합니다.
if(typeof sVal === 'undefined' || sVal === null || sVal === ''){ console.log('variable is undefined or null'); }
Chrome 콘솔에서 이 테스트를 실행합니다. (void 0)을 사용하면 undefined를 확인할 수 있습니다.
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
최신 자바스크립트 변경 사항으로 새 논리 연산자 ??=
를 사용하여 왼쪽 피연산자가 null
인지 undefined
는지 확인하고 그렇다면 오른쪽 피연산자의 값을 할당할 수 있습니다.
그래서,
if(EmpName == null){ // if Variable EmpName null or undefined EmpName = 'some value'; };
다음과 같습니다.
EmpName ??= 'some value';
(null == undefined) // true (null === undefined) // false
===는 유형과 값을 모두 확인하기 때문입니다. 둘 다 유형은 다르지만 값은 동일합니다.
이것을 살펴보자,
let apple; // Only declare the variable as apple alert(apple); // undefined
위의 변수는 apple
로만 선언됩니다. alert
메서드를 호출하면 정의되지 않은 것으로 표시됩니다.
let apple = null; /* Declare the variable as apple and initialized but the value is null */ alert(apple); // null
apple
값의 변수가 null이기 때문에 null을 표시합니다.
따라서 값이 정의되지 않았는지 null인지 확인할 수 있습니다.
if(apple !== undefined || apple !== null) { // Can use variable without any error }
foo == null
검사는 트릭을 수행하고 "정의되지 않은 OR null" 경우를 가장 짧은 방식으로 해결해야 합니다. ("foo가 선언되지 않은" 경우는 고려하지 않습니다.) 그러나 3등호(모범 사례로)를 사용했던 사람들은 이를 받아들이지 않을 수 있습니다. eslint 및 tslint의 eqeqeq 또는 triple-equals 규칙을 살펴보십시오.
undefined
거나 null
인지 확인할 때 명시적 접근 방식을 이 경우에 적용해야 하며 주제에 대한 내 기여(현재 27개의 음이 아닌 답변!)는 void 0
을 짧고 안전한 것으로 사용하는 것입니다. undefined
대한 검사를 수행하는 방법입니다.
foo === undefined
사용하는 것은 undefined 가 예약어가 아니며 음영 처리될 수 있기 때문에( MDN ) 안전하지 않습니다. typeof === 'undefined'
검사를 사용하는 것은 안전하지만 foo-is-undeclared 경우에 신경 쓰지 않으려면 다음 접근 방식을 사용할 수 있습니다.
if (foo === void 0 || foo === null) { ... }
확인하는 함수를 생성하는 경우:
export function isEmpty (v) { if (typeof v === "undefined") { return true; } if (v === null) { return true; } if (typeof v === "object" && Object.keys(v).length === 0) { return true; } if (Array.isArray(v) && v.length === 0) { return true; } if (typeof v === "string" && v.trim().length === 0) { return true; } return false; }
내가 10년 늦었다는 걸 알아. 그러나 누군가가 짧은 방법이 필요한 경우를 대비하여 여기에 내 대답을 남길 것입니다.
프로젝트에 Lodash 를 설치하면 이러한 상황에서 유용할 수 있는 도우미 기능 때문에 유용할 수 있습니다.
ES6 모듈을 사용하면 가져오기는 다음과 같이 됩니다.
import isNull from 'lodash/isNull'; import isUndefined from 'lodash/isUndefined'; import isNil from 'lodash/isNil';
사용된 기능만 가져오면 더 좋을 것입니다.
Lodash의 isNull 은 값이 null인지 확인합니다.
const value = null; if(isNull(value)) { // do something if null }
lodash의 isUndefined 는 값이 정의되지 않았는지 확인합니다.
const value = undefined; if(isUndefined(value)) { // do something if undefined. }
isNil 검사 값은 널 (null)이거나 정의 경우. 정의되지 않은 것과 null을 모두 검사하기 때문에 다른 두 가지 방법보다 이 방법을 선호합니다.
특수 값 null은 빈 개체 참조로 간주되므로 typeof null을 호출하면 "객체" 값이 반환됩니다. Safari 버전 5 및 Chrome 버전 7에는 정규 표현식에서 typeof를 호출하면 "함수"가 반환되고 다른 모든 브라우저에서는 "객체"가 반환되는 문제가 있습니다.
var x; if (x === undefined) { alert ("only declared, but not defined.") }; if (typeof y === "undefined") { alert ("not even declared.") };
정의와 선언을 모두 확인하므로 두 번째 항목만 사용할 수 있습니다.
var i; if (i === null || typeof i === 'undefined') { console.log(i, 'i is undefined or null') } else { console.log(i, 'i has some value') }
나는 여전히 이 두 가지 조건을 테스트하는 가장 안전하고 좋은 방법은 값을 문자열로 캐스팅하는 것이라고 생각합니다.
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 }
가장 좋은 방법은:
if(typeof variable==='undefined' || variable===null) { /* do your stuff */ }
출처 : http:www.stackoverflow.com/questions/2647867/how-can-i-determine-if-a-variable-is-undefined-or-null
두 커밋 사이에 변경된 파일 이름만 나열하는 방법 (0) | 2021.11.29 |
---|---|
리플렉션이란 무엇이며 왜 유용한가요? (0) | 2021.11.29 |
디렉토리가 이미 존재하지 않는 경우에만 mkdir하는 방법은 무엇입니까? (0) | 2021.11.29 |
'using' 지시문은 네임스페이스 내부 또는 외부에 있어야 합니까? (0) | 2021.11.29 |
Spring에서 @Component, @Repository & @Service 주석의 차이점은 무엇입니까? (2) | 2021.11.29 |