답변:
추상 항등 연산자 의 품질을 사용하여이를 수행 할 수 있습니다 .
if (variable == null){
// your code here.
}
때문에 null == undefined
사실, 위의 코드를 모두 잡을 것 null
등을 undefined
.
const y = undefined; y == null;
반환해야합니다true
y
상수 를 선언 했지만 비교 abc
하지는 않습니다 ( y
). 나는 시험 할 때 y
경유 console.log(y == null);
에 크롬과 파이어 폭스 내가 가지고 true
결과. 오류가 발생하면 =
비교 대신 할당 연산자를 사용 하여 다시 할당 할 수 없으므로 ==
오류를 반환하는 것이 좋습니다 const
.
null
하거나 undefined
변수가 동일한 경우 통과 0
? 문제는 truthy 값을 테스트 아니라, 명시 적으로 테스트에 대해하지 않습니다 null
또는 undefined
.
동시에 잡는 표준 방법 은 다음 null
과 undefined
같습니다.
if (variable == null) {
// do something
}
-보다 명확하지만 덜 간결한 것과 100 % 동일합니다.
if (variable === undefined || variable === null) {
// do something
}
전문 JS를 작성할 때 유형 평등과 ==
vs 의 동작을===
이해할 수 있습니다. 따라서 우리는를 사용 ==
하고 비교합니다 null
.
사용을 제안하는 의견 typeof
은 단순히 잘못되었습니다. 예, 위의 솔루션은 변수가 존재하지 않으면 ReferenceError를 발생시킵니다. 이것은 좋은 것입니다. 이 ReferenceError는 바람직합니다. 컴파일러 오류가 다른 언어에서와 같이 코드를 제공하기 전에 실수를 찾아서 수정하는 데 도움이됩니다. 제어 할 수없는 입력으로 작업하는 경우 try
/를 사용하십시오 catch
.
코드에서 선언되지 않은 변수에 대한 참조가 없어야합니다.
!==
대신 썼기 때문에 그렇습니다 !=
.
undefined
선언되었지만 초기화되지 않은 변수처럼 선언되고 값 이 있습니다. 즉, var someVar;
인수가 실제로 유지되지 않습니다.
위의 답변을 결합하면 가장 완벽한 답변은 다음과 같습니다.
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
이것은 선언되지 않았거나 선언되고 명시 적으로 null 또는 undefined로 설정된 변수에 대해 작동해야합니다. 실제 널이 아닌 값을 갖는 선언 된 변수에 대해 부울 표현식은 false로 평가되어야합니다.
typeof
그것이 함수가 아니라 연산자 라는 것을 알고 있으므로 괄호가 필요하지 않지만 그럼에도 불구하고 명확하게 읽기 위해 괄호에 감사드립니다.
variable == null
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
undefined
로 평가됩니다 null
.
/*jshint eqnull:true */
귀하의 JS 문서 또는 함수의 상단에, 그리고 JSHint는 당신의 사용에 대해 경고 중지됩니다 == null
.
==
? if(variable == null)
이 답변 의 강압 은 나에게 완전한 의미를 갖습니다.
if (typeof EmpName != 'undefined' && EmpName) {
값이 아닌 경우 true로 평가됩니다.
없는
찾으시는 주소가 없습니다
NaN
빈 문자열 ( "")
0
그릇된
if (EmpName)
. 그것의이 경우 undefined
이미 falsy 될 것입니다.
var EmpName; if (EmpName)
. 변수가 정의되었지만 값이 할당되지 않은 경우
jQuery attr()
함수는 빈 문자열 또는 실제 값을 반환합니다 (그리고 never null
또는 undefined
). 그것이 반환하는 유일한 시간 undefined
은 선택기가 요소를 반환하지 않은 경우입니다.
따라서 빈 문자열에 대해 테스트 할 수 있습니다. 또는 빈 문자열, null 및 undefined가 false이므로이 작업을 수행 할 수 있습니다.
if (!EmpName) { //do something }
ReferenceError: EmpName is not defined
undefined
요소에 속성이 존재하지 않으면 jQuery가 반환 합니다 (답변에 따라 선택기에 일치하는 요소가없는 경우뿐만 아니라). 예를 들어, img
아니오는 src
반환 undefined
을위한$('img').attr('src');
이를 위해 내 자신의 기능을 작성했습니다. JavaScript가 이상합니다.
말 그대로 무엇이든 사용할 수 있습니다. (이것은 변수에 사용 가능한 값이 포함되어 있는지 확인 하지만이 정보는 일반적으로 필요하기 때문에 게시 할 가치가 있다고 생각합니다). 메모를 남겨 두십시오.
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
비어 있지 않은 것으로 간주됩니다.
{ }
. 이것은 흔하고 어리석은 언어 문제이지만 잊어 버렸습니다. 모든 검색에서 정의되지 않은 null 값 또는 느슨한 동등 비교 (==)에 대한 답변을 표시하지만 엄격한 동등 (===) 또는 이와 동등한 것은 아닙니다. 그리고 여기 페이지의 맨 아래 에있는 -1 순위의 답변 (내가 upvoted하기 전에)이 나를 피하는 대답입니다. Object.keys( obj ).length < 1
또는 -1이 아니라고 가정하면 === 0 일 수 있습니다. 어쨌든 0으로 상향 조정되었습니다. : p
==
하기 ===
에 여기를, 다음이 합리적인 기능 할 것이다.
확인하려는 변수가 전역 변수이면
if (window.yourVarName) {
// Your code here
}
이 방법으로 yourVarName
변수가 존재하지 않아도 오류가 발생 하지 않습니다.
if (window.history) {
history.back();
}
window
은 전역 변수를 속성으로 보유하는 객체이며 JavaScript에서는 존재하지 않는 객체 속성에 액세스하는 것이 합법적입니다. 경우 history
다음 존재하지 않는 window.history
반환 undefined
. undefined
거짓이므로 if(undefined){}
블록의 코드가 실행되지 않습니다.
null
나 undefined
, 나 자바 스크립트는 (Node.js를에서 IE) 브라우저 외부에서 실행중인 경우이 작동합니다. 또한 치료 전역이 설정됩니다 0
, false
또는 ''
신고되지 않은이나되는 것과 동일 undefined
또는 null
일반적으로 미세이다.
아마도 가장 짧은 방법은 다음과 같습니다.
if(EmpName == null) { /* DO SOMETHING */ };
증거는 다음과 같습니다.
그리고 여기에 대한 자세한 내용이 있습니다 ==
(source here )
보너스 : 이유 ===
가 더 명확한 이유 ==
( agc answer보기 )
방금 객체에 null이 있는지 확인하는 것과 같은 문제가 있습니다.
나는 이것을 단순히 사용한다 :
if (object) {
// Your code
}
예를 들면 다음과 같습니다.
if (document.getElementById("enterJob")) {
document.getElementById("enterJob").className += ' current';
}
사용되므로 jQuery를 하면 변수가 정의되지 않은 경우, 또는 그 값이 하나의 기능을 이용하여 널을인지를 결정할 수있다.
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;
ReferenceError: s is not defined
첫 번째 예 에서 여전히 오류가 발생했습니다 .
확인하는 가장 쉬운 방법은 다음과 같습니다.
if(!variable) {
// If the variable is null or undefined then execution of code will enter here.
}
false
바람직하지 않은 경우 코드를 실행합니다 .
undefined
, null
그리고 빈 문자열, 0과 같은 몇 가지 다른 것들, -0 NaN
및 false
통과. !
연산자는 피연산자를 강제로 여기로 variable
-부울로 : ecma-international.org/ecma-262/#sec-toboolean
아래 솔루션으로 :
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');
}
typeof
을 잃지 undefined
말고 똑바로 비교하십시오 . 이것은 효과가 있지만 추가 연산자는 효과가 없습니다.
이 테스트는 Chrome 콘솔에서 실행합니다. (void 0)을 사용하면 정의되지 않은 것을 확인할 수 있습니다.
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
이것을 보자.
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
value의 변수가 null이기 때문에 null을 표시합니다 .
따라서 값이 정의되지 않았는지 또는 null인지 확인할 수 있습니다.
if(apple !== undefined || apple !== null) {
// Can use variable without any error
}
가장 좋은 방법은:
if(typeof variable==='undefined' || variable===null) {
/* do your stuff */
}
var i;
if (i === null || typeof i === 'undefined') {
console.log(i, 'i is undefined or null')
}
else {
console.log(i, 'i has some value')
}
typeof
산출하지 않습니다 . 또한, 경우 이미 사실 이다 번째 부울이 일 경우에도 중복 될 수 있도록. undefined
'undefined'
i == null
i
undefined
foo == null
검사는 트릭을하고 짧은 방식으로 "정의되지 않았거나 널 (null)"사건을 해결해야한다. ( "foo is not declaration"사례를 고려하지 않음.) 그러나 (가장 좋은 관행으로) 3 등가를 가진 사람들은 그것을 받아들이지 않을 수 있습니다. 에 그냥보기 eqeqeq 또는 트리플 - 동일 eslint 및 tslint의 규칙을 ...
이 경우 변수가 개별 인지 undefined
또는 null
개별 인지 검사 할 때 명시 적 접근 방식을 적용해야하며 주제에 대한 나의 기여 (지금은 음수가 아닌 27 개)가 void 0
검사를 수행하는 짧고 안전한 방법으로 사용하는 것입니다 에 대한 undefined
.
foo === undefined
undefined는 예약어가 아니므로 음영 처리 될 수 있으므로 사용 이 안전하지 않습니다 ( MDN ). typeof === 'undefined'
check를 사용하는 것은 안전하지만, foo-is-declared 경우에 관심이 없다면 다음과 같은 접근 방식을 사용할 수 있습니다.
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;
}
여전히이 두 가지 조건을 테스트하는 가장 안전하고 안전한 방법은 값을 문자열로 캐스팅하는 것입니다.
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
}
typeof를 사용하여 값이 정의되지 않았거나 null인지 확인할 수 있습니다.
if(typeof value == 'undefined'){
null
. 몇 년 전에 정확하고 완전한 답변을받은 질문에 새롭고 잘못된 답변이 제공되는 이유를 이해하지 못합니다. 현재 답변이 어떻게 든 부족하다고 생각하십니까?
if(x==null)
JavaScript에서는 나쁜 생각입니다. 다음으로 판단 "=="
-예상치 못한 유형 강제 변환을 유발할 수 있으며 CoffeeScript에서 읽을 수 없으므로
조건 판단에 "=="또는 "! ="를 사용하지 마십시오!
if(x)
더 낫지 만 0과 ""에 주의하십시오 . 동일한 방법 이 true 가 아닌 false 로 취급됩니다 ."!= null"
JavaScript 모범 사례를 참조하십시오 .
==
에 비교하는 것은 null
입니다 잡기의 표준 방법 및 JS한다. 와 유형 강제 변환 이 특정 컨텍스트에 위험하지 않고, 모두 잡기의 목표 달성의 장점을 취해지고 사실상 와 동시에합니다. 몇 년 전에 만족스럽게 해결 된 질문에 대한 부정확하고 오해의 소지가있는 답변을 제공하기 전에 언어에 대해 더 많은 시간을 보내십시오. null
undefined
==
null
undefined