ReferenceError: reference to undefined property "x"

메시지

  ReferenceError: reference to undefined property "x" (Firefox)

에러 형식

엄격 모드(strict mode)에서만 발생하는 ReferenceError 경고.

무엇이 잘못되었을까?

이 스크립트는 존재하지 않는 객체의 속성에 접근을 시도했습니다. 요소에 접근하는 방법에는 두 가지가 있습니다.; 더 자세히 알고 싶으시다면, 속성 접근자(property accessors) 참조 문서를 봐주세요.

정의되지 않은 속성 참조에 대한 에러는 엄격 모드 코드(strict mode code)에서만 발생합니다. 비-엄격모드의 코드에서는 존재하지 않는 속성에 대한 접근은 조용히 무시됩니다.

허용되지 않는 경우

이 경우에는, 속성 bar 는 정의되지 않은 속성으로, ReferenceError 가 발생합니다.

js
"use strict";

var foo = {};
foo.bar; // ReferenceError: reference to undefined property "bar"

허용되는 경우

에러를 피하기 위해서는, 접근을 시도하기 앞서, 객체에 bar 에 대한 정의를 추가하거나 bar 속성의 존재 여부를 확인해야 합니다.; 아래와 같이 Object.prototype.hasOwnProperty() method)를 사용하는 것이 하나의 방법이 될 수 있습니다.:

js
"use strict";

var foo = {};

// bar 속성을 정의한다.

foo.bar = "moon";
console.log(foo.bar); // "moon"

// bar에 접근하기 전에 존재 하는지 확인한다.

if (foo.hasOwnProperty("bar") {
  console.log(foo.bar);
}

참조