[JavaScript] 변수 생성 여부 확인

try-catch

var flag;

try {
  foo;
  flag = true;
} catch (e) {
  flag = false;
}

console.log(flag);

typeof

var flag;

if (typeof foo == 'undefined') {
  flag = false;
} else {
  flag = true;
}

console.log(flag);

응용: 특정 함수나 객체가 생성될 때까지 대기

setTimeout(() => {
  window.abcd = '';
}, 3000);

(function waitUntilDefined() {
  if (typeof abcd === 'undefined') {
    console.debug('not defined');
    setTimeout(waitUntilDefined, 500);
    return;
  }
  console.debug('defined');
})();

in

프로퍼티가 있는지 확인하는 방법. 그러니까 로컬 변수에는 적용할 수 없다.

var abc;
'abc' in window; // true

function fn() {
  var def;
  console.log('def' in window); // false
  console.log('def' in this); // false
  console.log('def' in fn); // false
}
fn();