etc./StackOverFlow

변수가 '정의되지 않음' 또는 'null'인지 어떻게 확인할 수 있습니까?

청렴결백한 만능 재주꾼 2021. 11. 29. 22:34
반응형

질문자 :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이므로 위의 코드는 nullundefined 모두 catch합니다.


Sarfraz

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

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

--더 명시적이지만 덜 간결한 것과 100% 동일합니다.

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

전문 JS를 작성할 때 유형 평등과 ===== 의 동작을 이해하는 것이 당연하게 받아들여집니다. 따라서 우리는 == null 과만 비교합니다.


다시 수정

typeof 의 사용을 제안하는 주석은 단순히 잘못된 것입니다. 예, 위의 솔루션은 변수가 존재하지 않으면 ReferenceError를 발생시킵니다. 이것은 좋은 일입니다. 이 ReferenceError는 바람직합니다. 다른 언어에서 컴파일러 오류가 발생하는 것처럼 코드를 제공하기 전에 실수를 찾고 수정하는 데 도움이 됩니다. 제어할 수 없는 입력으로 작업하는 경우 try / catch 사용하십시오.

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


temporary_user_name

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

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

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


jkindwall

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

user216441

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

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

  • 없는

  • 찾으시는 주소가 없습니다

  • 빈 문자열("")

  • 0

  • 거짓


Thamaraiselvam

아마도 이것을 하는 가장 짧은 방법은 다음과 같습니다:

 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 답변 참조 )

여기에 이미지 설명 입력


Kamil Kiełczewski

jQuery attr() 함수는 빈 문자열이나 실제 값을 반환합니다( null 또는 undefined 절대 아님). undefined 반환하는 유일한 경우는 선택기가 요소를 반환하지 않았을 때입니다.

따라서 빈 문자열에 대해 테스트할 수 있습니다. 또는 공백 문자열, null 및 undefined가 false-y이므로 다음과 같이 하면 됩니다.

 if (!EmpName) { //do something }

Chetan S

편집 된 답변 : 제 생각에는 아래의 오래된 답변의 기능을 사용해서는 안됩니다. 대신 변수의 유형을 알고 직접 확인을 사용해야 합니다(예: 배열이 비어 있는지 궁금하십니까? 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 는 비어 있지 않은 것으로 간주됩니다.


phil294

가장 짧고 쉬운:

 if(!EmpName ){ // DO SOMETHING }

EmpName이 다음과 같은 경우 true로 평가됩니다.

  • 없는
  • 찾으시는 주소가 없습니다
  • 비어있는
  • 끈 ("")
  • 0
  • 거짓

userPlus

확인하려는 변수가 전역이면 다음을 수행하십시오.

 if (window.yourVarName) { // Your code here }

yourVarName 변수가 존재하지 않는 경우에도 오류가 발생하지 않습니다.

예: 내 브라우저가 History API를 지원하는지 알고 싶습니다.

 if (window.history) { history.back(); }

작동 방식:

window 는 모든 전역 변수를 속성으로 보유하는 객체이며 JavaScript에서는 존재하지 않는 객체 속성에 액세스하려고 시도하는 것이 합법적입니다. history 이 존재하지 않으면 window.history undefined 반환합니다. undefined 는 false이므로 if(undefined){} 블록의 코드는 실행되지 않습니다.


DenisS

JavaScript 에서 내 지식에 따라 아래와 같이 undefined , null 또는 변수를 확인할 수 있습니다.

 if (variable === undefined){ } if (variable === null){ } if (variable === ''){ }

모든 조건 확인:

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

Hardik Desai

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;

Angelin Nadar

방금이 문제가 발생했습니다. 즉 개체가 null인지 확인하는 것입니다.
나는 단순히 이것을 사용합니다 :

 if (object) { // Your code }

예를 들어:

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

Welshboy

다음을 간단히 사용할 수 있습니다(이 작업을 수행하는 더 짧은 방법이 있다는 것을 알고 있지만 적어도 코드를 보고 있는 다른 사람들에게는 시각적으로 더 쉽게 관찰할 수 있습니다).

 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/


agc

jQuery 검사 요소가 null이 아님:

 var dvElement = $('#dvElement'); if (dvElement.length > 0) { // Do something } else{ // Else do something else }

Kapil

확인하는 가장 쉬운 방법은 다음과 같습니다.

 if(!variable) { // If the variable is null or undefined then execution of code will enter here. }

M. Arnold

아래 솔루션으로:

 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...

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

  • 없는
  • 찾으시는 주소가 없습니다
  • 비어있는
  • 끈 ("")
  • 0
  • 거짓

Tony Tai Nguyen

변수가 null인지 정의되지 않은지 테스트하려면 아래 코드를 사용합니다.

 if(typeof sVal === 'undefined' || sVal === null || sVal === ''){ console.log('variable is undefined or null'); }

DanKodi

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

suhail

최신 자바스크립트 변경 사항으로 새 논리 연산자 ??= 를 사용하여 왼쪽 피연산자가 null 인지 undefined 는지 확인하고 그렇다면 오른쪽 피연산자의 값을 할당할 수 있습니다.

그래서,

 if(EmpName == null){ // if Variable EmpName null or undefined EmpName = 'some value'; };

다음과 같습니다.

 EmpName ??= 'some value';

Ashan Priyadarshana

(null == undefined) // true (null === undefined) // false

===는 유형과 값을 모두 확인하기 때문입니다. 둘 다 유형은 다르지만 값은 동일합니다.


Franklin Pious

이것을 살펴보자,

  1.  let apple; // Only declare the variable as apple alert(apple); // undefined

    위의 변수는 apple 로만 선언됩니다. alert 메서드를 호출하면 정의되지 않은 것으로 표시됩니다.

  2.  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 }

Anjana Kumari

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) { ... }

dhilt

확인하는 함수를 생성하는 경우:

 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; }

Ernesto

내가 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을 모두 검사하기 때문에 다른 두 가지 방법보다 이 방법을 선호합니다.


Dante_97

특수 값 null은 빈 개체 참조로 간주되므로 typeof null을 호출하면 "객체" 값이 반환됩니다. Safari 버전 5 및 Chrome 버전 7에는 정규 표현식에서 typeof를 호출하면 "함수"가 반환되고 다른 모든 브라우저에서는 "객체"가 반환되는 문제가 있습니다.


Jones Agyemang

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

정의와 선언을 모두 확인하므로 두 번째 항목만 사용할 수 있습니다.


keshav

var i; if (i === null || typeof i === 'undefined') { console.log(i, 'i is undefined or null') } else { console.log(i, 'i has some value') }

KARTHIKEYAN.A

나는 여전히 이 두 가지 조건을 테스트하는 가장 안전하고 좋은 방법은 값을 문자열로 캐스팅하는 것이라고 생각합니다.

 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 }

n1kkou

가장 좋은 방법은:

 if(typeof variable==='undefined' || variable===null) { /* do your stuff */ }

Nishanth Matha

출처 : http:www.stackoverflow.com/questions/2647867/how-can-i-determine-if-a-variable-is-undefined-or-null

반응형