etc./StackOverFlow

자바스크립트 변수 존재 여부 확인(정의/초기화)

청렴결백한 만능 재주꾼 2021. 12. 8. 01:19
반응형

질문자 :Samuel Liew


변수가 초기화되었는지 확인하는 어떤 방법이 더 나은/올바릅니까? (변수가 무엇이든 담을 수 있다고 가정합니다(문자열, 정수, 객체, 함수 등))

 if (elem) { // or !elem

또는

 if (typeof elem !== 'undefined') {

또는

 if (elem != null) {


typeof 연산자를 원합니다. 구체적으로 특별히:

 if (typeof variable !== 'undefined') { // the variable is defined }

Jim Puls

typeof 연산자는 변수가 실제로 정의되지 않았는지 확인합니다.

 if (typeof variable === 'undefined') { // variable is undefined }

typeof 연산자는 다른 연산자와 달리 선언되지 않은 변수와 함께 사용할 때 ReferenceError 예외를 throw하지 않습니다.

그러나 typeof null"object" 반환합니다. null 로 초기화하는 실수를 피하기 위해 주의해야 합니다. 안전을 위해 다음을 대신 사용할 수 있습니다.

 if (typeof variable === 'undefined' || variable === null) { // variable is undefined or null }

단순 같음 == === 사용에 대한 자세한 내용은 다음을 참조하세요.
JavaScript 비교에서 어떤 등호 연산자(== vs ===)를 사용해야 합니까?


Samuel Liew

많은 경우 다음을 사용합니다.

 if (elem) { // or !elem

당신을 위해 일을 할 것입니다!... 이것은 아래의 경우를 확인할 것입니다:

  1. undefined : 값이 정의되지 않고 정의 undefined
  2. null : null인 경우, 예를 들어 DOM 요소가 존재하지 않는 경우...
  3. 빈 문자열 : ''
  4. 0 : 숫자 0
  5. NaN : 숫자가 아님
  6. 거짓

그래서 그것은 모든 경우를 덮을 것이지만 우리가 다루고 싶은 이상한 경우도 항상 있습니다. 예를 들어 공백이 있는 문자열, 예를 들어 이 ' ' 와 같이 공백이 있으므로 자바스크립트에서 정의됩니다. 내부 문자열... 예를 들어 이 경우 다음과 같이 trim()을 사용하여 검사를 한 번 더 추가합니다.

 if(elem) { if(typeof elem === 'string' && elem.trim()) { ///

또한 이러한 검사는 값에 대해서만 수행됩니다. Javascript에서 객체와 배열이 다르게 작동하기 때문에 빈 배열 [] 및 빈 객체 {} 는 항상 true 입니다.

답변에 대한 간단한 요약을 보여주기 위해 아래 이미지를 만듭니다.

정의되지 않음, null 등


Alireza

JavaScript에서는 변수를 정의할 수 있지만 값을 undefined 유지하므로 가장 일반적인 대답은 기술적으로 정확하지 않으며 대신 다음을 수행합니다.

 if (typeof v === "undefined") { // no variable "v" is defined in the current scope // *or* some variable v exists and has been assigned the value undefined } else { // some variable (global or local) "v" is defined in the current scope // *and* it contains a value other than undefined }

그것은 당신의 목적에 충분할 수 있습니다. 다음 테스트에는 더 간단한 의미 체계가 있어 코드의 동작을 정확하게 설명하고 스스로 이해할 수 있습니다(이러한 사항에 관심이 있는 경우).

 if ("v" in window) { // global variable v is defined } else { // global variable v is not defined }

물론 이것은 브라우저에서 실행 중이라고 가정합니다(여기서 window 는 전역 개체의 이름입니다). 그러나 이와 같은 전역을 가지고 놀고 있다면 아마도 브라우저에있을 것입니다. 주관적 'name' in window 을 사용하는 것은 전역을 참조하기 위해 window.name 을 사용하는 것과 스타일적으로 일치합니다. window 속성으로 전역에 액세스하면 코드에서 참조하는 선언되지 않은 변수의 수를 최소화할 수 있고(린트의 이점을 위해) 전역이 지역 변수에 의해 가려지는 가능성을 피할 수 있습니다. 또한 전역이 피부를 기어 다니게 하면 이 비교적 긴 막대기로만 피부를 만지는 것이 더 편안할 것입니다.


Brian Kelley

대부분의 경우 다음을 사용합니다.

 elem != null

if (elem) 과 달리 0 , false , NaN'' 는 허용하지만 null 또는 undefined 거부하므로 인수 또는 객체 속성의 존재 여부에 대한 좋은 일반적인 테스트가 됩니다.


다른 검사도 올바르지 않으며 용도가 다를 뿐입니다.

  • if (elem) elem 이 객체로 보장되거나 false , 0 등이 "기본" 값으로 간주되는 경우 사용할 수 있습니다 undefined 또는 null 과 동일).

  • typeof elem == 'undefined' null 이 초기화되지 않은 변수나 속성에 대해 고유한 의미를 갖는 경우에 사용할 수 있습니다.

    • elem 이 선언 되지 않은 경우 오류를 발생시키지 않는 유일한 검사입니다(즉, var 문이 없거나 window 의 속성이 아니거나 함수 인수가 아님). 제 생각에 이것은 오타가 눈에 띄지 않게 미끄러질 수 있기 때문에 다소 위험합니다. 이를 방지하려면 아래 방법을 참조하십시오.

undefined 대한 엄격한 비교도 유용합니다.

 if (elem === undefined) ...

그러나 전역 undefined 는 다른 값으로 재정의될 수 있으므로 사용하기 전에 현재 범위에서 undefined

 var undefined; // really undefined if (elem === undefined) ...

또는:

 (function (undefined) { if (elem === undefined) ... })();

이 방법의 두 번째 이점은 JS 축소자가 undefined 변수를 단일 문자로 줄여 매번 몇 바이트를 절약할 수 있다는 것입니다.


David Tang

window 인지 확인하십시오. hasOwnProperty ( " varname " )

과다한 typeof 답변에 대한 대안;

var varname = value; 선언된 전역 변수 전역 범위의 진술

창 개체의 속성으로 액세스할 수 있습니다.

따라서 hasOwnProperty() 메서드는

객체가 지정된 속성을 고유한 속성으로 가지고 있는지 여부를 나타내는 부울을 반환합니다(상속과 반대).

여부를 결정하는 데 사용할 수 있습니다.

"varname"var 가 전역적으로 선언되었습니다. window 의 속성입니다.

 // Globally established, therefore, properties of window var foo = "whatever", // string bar = false, // bool baz; // undefined // window.qux does not exist console.log( [ window.hasOwnProperty( "foo" ), // true window.hasOwnProperty( "bar" ), // true window.hasOwnProperty( "baz" ), // true window.hasOwnProperty( "qux" ) // false ] );

hasOwnProperty() 의 좋은 점은 호출할 때 아직 선언되지 않은 변수를 사용하지 않는다는 것입니다. 물론 처음에는 절반의 문제입니다.

항상 완벽 하거나 이상적인 솔루션은 아니지만 특정 상황에서는 단지 작업일 뿐입니다!

노트

let which 와 달리 var 를 사용하여 변수를 정의할 때 위의 내용이 사실 입니다.

블록 범위 지역 변수를 선언하고 선택적으로 값으로 초기화합니다.

변수를 전역적으로 정의하거나 블록 범위에 관계없이 전체 함수에 대해 로컬로 정의하는 var 키워드와 다릅니다.

프로그램 및 함수의 최상위 수준에서 let var 와 달리 전역 객체에 속성을 생성하지 않습니다.

완전성을 위해: const 상수는 정의에 따라 실제로 가변적이지 않습니다(내용은 가변적일 수 있음). 더 관련성:

var 변수와 달리 창 개체의 속성이 되지 않습니다. 상수에 대한 초기화가 필요합니다. 즉, 선언된 동일한 명령문에서 해당 값을 지정해야 합니다.

상수의 값은 재할당을 통해 변경할 수 없으며 재선언할 수 없습니다.

const 선언은 값에 대한 읽기 전용 참조를 만듭니다. 변수 식별자를 재할당할 수 없다는 것이지 보유하고 있는 값이 변경 불가능하다는 의미는 아닙니다.

let 변수나 const hasOwnProperty() 메서드를 상속받은 객체의 속성이 아니므로 존재를 확인하는 데 사용할 수 없습니다.

hasOwnProperty() 의 가용성 및 사용에 관하여:

후손 모든 개체 개체 상속 hasOwnProperty() 메서드를. [...] in 연산자와 달리 이 메서드는 개체의 프로토타입 체인을 확인하지 않습니다.


Fred Gandt

변수가 존재하는지 확인하는 방법

이것은 변수가 존재하고 초기화되었는지 테스트하기 위한 매우 완벽한 솔루션입니다.

 var setOrNot = typeof variable !== typeof undefined;

특정 변수가 초기화되지 않은 경우 기본값을 설정하기 위해 삼항 연산자 와 함께 가장 일반적으로 사용됩니다.

 var dark = typeof darkColor !== typeof undefined ? darkColor : "black";

캡슐화 문제

불행히도, 단순히 함수에 수표를 캡슐화할 수는 없습니다.

다음과 같이 할 수 있습니다.

 function isset(variable) { return typeof variable !== typeof undefined; }

그러나 예를 들어 호출하는 경우 참조 오류가 발생합니다. isset(foo) 및 변수 foo 는 정의되지 않았습니다. 존재하지 않는 변수를 함수에 전달할 수 없기 때문입니다.

잡히지 않은 ReferenceError: foo가 정의되지 않았습니다.


함수 매개변수가 정의되지 않았는지 테스트

isset 함수는 변수가 존재하는지 여부를 테스트하는 데 사용할 수 없지만(위에서 설명한 이유 때문에), 함수의 매개변수가 정의되지 않았는지 여부를 테스트할 수 있습니다.

 var a = '5'; var test = function(x, y) { console.log(isset(x)); console.log(isset(y)); }; test(a); // OUTPUT : // ------------ // TRUE // FALSE

y 에 대한 값이 function test isset 함수는 이 컨텍스트에서 완벽하게 작동합니다. y 는 function test 에서 undefined 값으로 알려져 있기 때문입니다.


John Slegers

변수를 테스트하는 짧은 방법은 선언되지 않음(정의되지 않음)입니다.

 if (typeof variable === "undefined") { ... }

window 변수를 선언하지 않음)를 감지하는 데 유용하다는 것을 알았습니다.


user2878850

간단한 할당 및 관련 검사를 수행할 때 이를 확인하는 또 다른 간단한 방법이 있습니다. 조건부(삼항) 연산자를 사용하기만 하면 됩니다.

 var values = typeof variable !== 'undefined' ? variable : '';

또한 이것은 참조 변수의 인스턴스 할당으로 전역 변수를 선언하려고 할 때 도움이 될 것입니다.

변수를 확인하려면 undefined 또는 null 해서는 안 됩니다. 그런 다음 아래 확인을 수행하십시오.

변수가 선언될 때 값을 확인하려는 경우에도 Simple: 이며 undefined 검사와 null 검사를 함께 수행합니다.

 var values = variable ? variable : '';

RajeshKdev

변수가 정의되었는지 또는 의미 있는 값을 갖기를 원하는지에 따라 다릅니다.

유형이 정의되지 않았는지 확인하면 변수가 아직 정의되었는지 확인합니다.

=== null 또는 !== null 은 변수 값이 정확히 null 인지만 확인합니다.

== null 또는 != null 은 값이 undefined 또는 null 인지 확인합니다.

if(value) 는 변수가 undefined , null , 0 또는 빈 문자열인지 확인합니다.


Alan Geleynse

시도 캐치

변수가 전혀 정의되지 않은 경우(예: 전역 변수를 정의하는 외부 라이브러리가 아직 로드되지 않음 - 예: Google 지도) 다음과 같이 try-catch 블록을 사용하여 중단 코드 실행 없이 확인할 수 있습니다( use strict 모드)

 try{ notDefinedVariable; } catch(e) { console.log('detected: variable not exists'); } console.log('but the code is still executed'); notDefinedVariable; // without try-catch wrapper code stops here console.log('code execution stops. You will NOT see this message on console');

보너스: (다른 답변 참조) === == ( 출처 )보다 더 명확한 이유

if( a == b )

여기에 이미지 설명 입력

if( a === b )

여기에 이미지 설명 입력


Kamil Kiełczewski

가장 높은 대답은 정확합니다. typeof를 사용하십시오.

그러나 내가 지적하고 싶은 것은 JavaScript에서 undefined 가 변경 가능하다는 것입니다(어떤 불경건한 이유로). varName !== undefined 대한 검사를 수행하면 다른 라이브러리가 undefined로 변경되었을 수 있기 때문에 항상 예상대로 반환되지 않을 가능성이 있습니다. 몇 가지 답변(@skalee의 경우)은 typeof 사용하지 않는 것을 선호하는 것으로 보이며 문제가 발생할 수 있습니다.

이 문제를 처리하는 "오래된"방법의 잠재적 음소거 / 오버 라이딩 상쇄하기 위해 var에 정의되지 않은 선언 된 undefined . 그러나 가장 좋은 방법은 여전히 typeof 를 사용하는 것입니다. 다른 코드에서 undefined 재정의를 무시하기 때문입니다. 특히 페이지에서 실행될 수 있는 다른 것을 누가 알 수 있는 야생에서 사용할 코드를 작성하는 경우...


shadowstorm

if (typeof console != "undefined") { ... }

또는 더 나은

 if ((typeof console == "object") && (typeof console.profile == "function")) { console.profile(f.constructor); }

모든 브라우저에서 작동


boslior

논쟁에 기여하기 위해 변수가 문자열 또는 객체여야 한다는 것을 알고 있으면 항상 if (!variable) 선호하므로 거짓인지 확인합니다. 이것은 예를 들어 다음과 같이 더 깨끗한 코드를 가져올 수 있습니다.

 if (typeof data !== "undefined" && typeof data.url === "undefined") { var message = 'Error receiving response'; if (typeof data.error !== "undefined") { message = data.error; } else if (typeof data.message !== "undefined") { message = data.message; } alert(message); }

..다음으로 줄일 수 있습니다.

 if (data && !data.url) { var message = data.error || data.message || 'Error receiving response'; alert(message) }


de3

가장 강력한 '정의됨' 확인은 typeof를 사용하는 것입니다.

 if (typeof elem === 'undefined')

기본값을 할당하기 위해 정의된 변수를 확인하는 경우 하나의 라이너를 쉽게 읽을 수 있도록 종종 다음을 수행할 수 있습니다.

 elem = elem || defaultElem;

종종 사용하는 것이 좋습니다. 참조: 자바스크립트에서 기본값을 설정하는 관용적 방법

typeof 키워드를 사용하는 다음과 같은 라이너도 있습니다.

 elem = (typeof elem === 'undefined') ? defaultElem : elem;

Zv_oDD

Null은 JavaScript의 값이고 typeof null"object"

따라서 null 값을 전달하면 수락된 답변이 작동하지 않습니다. null 값을 전달하는 경우 null 값에 대한 추가 검사를 추가해야 합니다.

 if ((typeof variable !== "undefined") && (variable !== null)) { // the variable is defined and not null }

Razan Paul

undefined와 null을 구별하기 어렵습니다. Null 은 변수에 특정 값이 없음을 나타내려는 경우 변수에 할당할 수 있는 값입니다. Undefined 는 할당되지 않은 변수의 기본값이 되는 특수 값입니다.

var _undefined; var _null = null; alert(_undefined); alert(_null); alert(_undefined == _null); alert(_undefined === _null);
var _undefined; var _null = null; alert(_undefined); alert(_null); alert(_undefined == _null); alert(_undefined === _null);

Jith

typeof 연산자를 사용할 수 있습니다.

예를 들어,

 var dataSet; alert("Variable dataSet is : " + typeof dataSet);

위의 코드 조각은 다음과 같은 출력을 반환합니다.

변수 dataSet은: 정의되지 않았습니다.


Ravindra Miyani

변수가 선언/설정되었는지 확인하기 위해 이 더러운 트릭을 수행했습니다.

eval 하더라도 코드를 함수로 추출하는 방법을 찾지 못했습니다.

 "use strict"; // var someVar; var declared; try { someVar; declared = true; } catch(e) { declared = false; } if (declared) { console.log("someVar is declared; now has the value: " + someVar); } else { console.log("someVar is not declared"); }

Ferran Maylinch

나는 개체에 따라 두 가지 다른 방법을 사용합니다.

 if( !variable ){ // variable is either // 1. ''; // 2. 0; // 3. undefined; // 4. null; // 5. false; }

때로는 빈 문자열을 거짓으로 평가하고 싶지 않으므로 이 경우를 사용합니다.

 function invalid( item ){ return (item === undefined || item === null); } if( invalid( variable )){ // only here if null or undefined; }

반대가 필요한 경우 첫 번째 인스턴스에서 !variable은 !!variable이 되고 잘못된 함수에서는 ===가 !=가 되고 함수 이름이 notInvalid로 변경됩니다.


SoEzPz

질문에 설명된 특정 상황에서,

 typeof window.console === "undefined"

와 동일하다

 window.console === undefined

더 짧기 때문에 후자를 선호합니다.

우리는 전역 범위(모든 브라우저 window console 을 찾습니다. 이 특정 상황에서는 바람직합니다. console 다른 곳에서 정의되는 것을 원하지 않습니다.

그의 훌륭한 답변에서 @BrianKelley는 기술적 세부 사항을 설명합니다. 부족한 결론만 추가하고 읽기 쉬운 것으로 요약했습니다.


skalee

내 기본 설정은 typeof(elem) != 'undefined' && elem != null 입니다.

어떤 것을 선택하든 다음과 같은 기능에 수표를 넣는 것을 고려하십시오.

 function existy (x) { return typeof (x) != 'undefined' && x != null; }

변수가 선언되었는지 모른다면 typeof (x) != 'undefined' && x != null;

변수가 선언되었지만 존재하지 않을 수 있는 경우 다음을 사용할 수 있습니다.

 existy(elem) && doSomething(elem);

확인 중인 변수가 때때로 중첩 속성일 수 있습니다. 소품을 사용할 수 있습니다 || {}를 사용하여 해당 속성의 존재 여부를 확인하는 줄로 이동합니다.

 var exists = ((((existy(myObj).prop1||{}).prop2||{}).prop3||{})[1]||{}).prop4;

각 속성 후에 (...' || {}').nextProp을 사용하여 누락된 속성이 오류를 발생시키지 않도록 합니다.

existy(o) && existy(op) && existy(opq) && doSomething(opq) 과 같은 Existing을 사용할 수 있습니다.


curtwphillips

if (variable === undefined) {}

잘 작동하고 정의되지 않은 경우에만 확인합니다.


John Lord

상황에 따라 다릅니다. 코드 외부에서 전역적으로 정의되거나 정의되지 않은 항목을 확인하는 경우(예: jQuery와 같이) 다음을 원합니다.

 if (typeof(jQuery) != "undefined")

(엄격한 동등성은 필요하지 않습니다. typeof는 항상 문자열을 반환합니다.) 그러나 전달되었거나 전달되지 않았을 수 있는 함수에 대한 인수가 있는 경우 항상 정의되지만 생략하면 null입니다.

 function sayHello(name) { if (name) return "Hello, " + name; else return "Hello unknown person"; } sayHello(); // => "Hello unknown person"

jpsimons

다음과 같이 try...catch 블록을 사용할 수 있습니다.

 var status = 'Variable exists' try { myVar } catch (ReferenceError) { status = 'Variable does not exist' } console.log(status)

단점은 ReferenceError가 발생하므로 함수에 넣을 수 없다는 것입니다.

 function variableExists(x) { var status = true try { x } catch (ReferenceError) { status = false } return status } console.log(variableExists(x))

편집하다:

프론트 엔드 Javascript에서 작업하고 변수가 초기화되지 않았는지 확인해야 하는 경우( var x = undefined 는 초기화되지 않은 것으로 간주됨) 다음을 사용할 수 있습니다.

 function globalVariableExists(variable) { if (window[variable] != undefined) { return true } return false } var x = undefined console.log(globalVariableExists("x")) console.log(globalVariableExists("y")) var z = 123 console.log(globalVariableExists("z"))

편집 2:

변수가 현재 범위에 존재하는지 확인해야 하는 경우 문자열에 포함된 변수의 이름과 함께 this

 function variableExists(variable, thisObj) { if (thisObj[variable] !== undefined) { return true } return false } class someClass { constructor(name) { this.x = 99 this.y = 99 this.z = 99 this.v = 99 console.log(variableExists(name, this)) } } new someClass('x') new someClass('y') new someClass('z') new someClass('v') new someClass('doesNotExist')


GalaxyCat105

정확성과 간결함 때문에 이 방법을 선호합니다.

 var x if (x === void 0) { console.log(`x is undefined`) } else { console.log(`x is defined`) }

다른 의견과 답변에서 언급했듯이 undefined 는 undefined라고 보장되지 않습니다. 키워드가 아니므로 전역 범위 이외의 범위에서 변수로 재정의할 수 있습니다. 다음은 이러한 뉘앙스를 보여주는 작은 예입니다.

 var undefined = 'bar' console.log(`In the global scope: ${undefined}`) function foo() { var undefined = 'defined' var x if (x === undefined) { console.log(`x === undefined`) } else { console.log(`x !== undefined`) } if (x === void 0) { console.log(`x === void 0`) } else { console.log(`x !== void 0`) } } foo()

호환성에 대해서는 void 를 참조하십시오(IE5에서 지원됨!??!! 와우!).


Trevor

이러한 답변(Fred Gandt 솔루션 제외)은 모두 부정확하거나 불완전합니다.

variableName; 필요하다고 가정합니다. undefined 값을 전달 var variableName; 과 같은 방식으로 선언되었습니다. 이는 이미 초기화 되었음을 의미합니다. - 이미 선언되었는지 어떻게 확인합니까?

또는 더 나은 방법 - "Book1.chapter22.paragraph37"이 단일 호출로 존재하지만 참조 오류가 발생하지 않는지 즉시 확인하는 방법은 무엇입니까?

가장 강력한 JasvaScript 연산자인 in 연산자를 사용하여 수행합니다.:

 "[variable||property]" in [context||root] >> true||false

Bekim Bacaj

이게 아직 언급이 안된게 신기하네요...

다음은 이것을 사용하는 몇 가지 추가 변형입니다 this['var_name']

이 방법을 사용하면 변수가 정의되기 전에 사용할 수 있다는 이점이 있습니다.

 if (this['elem']) {...}; // less safe than the res but works as long as you're note expecting a falsy value if (this['elem'] !== undefined) {...}; // check if it's been declared if (this['elem'] !== undefined && elem !== null) {...}; // check if it's not null, you can use just elem for the second part // these will work even if you have an improper variable definition declared here elem = null; // <-- no var here!! BAD!

Daniel

ReactJS 에서는 상황이 조금 더 복잡합니다!react-scripts@2.0.3 (2018년 10월 1일 릴리스) 이후 ESLint의 no-undef 규칙을 따르는 컴파일된 환경이기 때문입니다. 여기에 있는 문서는 이 문제에 관심이 있는 모든 사람에게 도움이 됩니다...

JavaScript에서 ES6 이전에는 변수 및 함수 선언이 범위의 맨 위로 호이스트되므로 코드에서 형식 선언 전에 식별자를 사용할 수 있습니다....

ES6의 이 [새로운] 규칙은 아직 선언되지 않은 식별자에 대한 참조를 만나면 경고합니다.

따라서 undefined (또는 "초기화되지 않은") 변수 를 가질 수 는 있지만 eslint 규칙을 해제하지 않고는 ReactJS에서 선언되지 않은 변수를 가질 수 없습니다.

이것은 매우 실망스러울 수 있습니다. GitHub에는 ES6 이전 표준을 활용하는 프로젝트가 너무 많습니다. 조정 없이 직접 컴파일하는 것은 기본적으로 불가능합니다.

그러나 ReactJS의 eval() 사용할 수 있습니다. 다음과 같이 선언되지 않은 변수가 있는 경우...

 if(undeclaredvar) {...}

이 부분을 다음과 같이 다시 작성할 수 있습니다.

 if(eval('typeof undeclaredvar !== "undefined"')) {...}

예를 들어...

 if(eval("false")) { console.log("NO!"); } if(eval("true")) { console.log("YEAH!"); }

GitHub 리포지토리를 ReactJS 프로젝트로 가져오는 경우 이것은 변수가 선언되었는지 확인하는 유일한 방법입니다. 닫기 전에 잘못 사용하면 eval() 보안 문제 가 있음을 상기시키고 싶습니다.


HoldOffHunger

당신은 또한 사용할 수 있습니다 !! 변수 앞에 정의되어 있는지 확인합니다. 예

 let dog = "woof"; let chineseCat; // Undefined. console.log("1."); console.log(!!dog && !!chineseCat ? "Both are defined" : "Both are NOT defined"); chineseCat= "mao"; // dog and chineseCat are now defined. console.log("2."); console.log(!!dog && !!chineseCat ? "Both are defined" : "Both are NOT defined");

산출:

 1. Both are NOT defined 2. Both are defined

daCoda

출처 : http:www.stackoverflow.com/questions/5113374/javascript-check-if-variable-exists-is-defined-initialized

반응형