ReferenceError: "x" is not defined

ReferenceError: "x" no está definida.

Tipo de error

¿Qué está mal?

Hay una variable no existente que está siendo referida en algún lugar. Esta variable necesita ser declarada o se debe comprobar su disponibilidad en el ámbito actual del script.

Nota: Cuando una librería es cargada (como por ejemplo jQuery) asegúrese de que se haya cargado antes de intentar acceder a sus variables, como por ejemplo "$". Ponga la etiqueta <script> (en-US), que carga la librería antes del código que la utiliza.

Ejemplo

Variable no declarada

js
foo.substring(1); // ReferenceError: foo no está declarada.

La variable "foo" no está declarada en ninguna parte. La variable debe ser alguna cadena para que el método String.prototype.substring() funcione correctamente.

js
var foo = "bar";
foo.substring(1); // "ar"

Contexto erróneo

Una variable necesita estar disponible en el contexto actual de ejecución. No se puede acceder a las variables definidas dentro de una función desde fuera de dicha función, debido a que la variable está definida solamente dentro de la función.

js
function numbers() {
  var num1 = 2,
    num2 = 3;
  return num1 + num2;
}

console.log(num1); // ReferenceError num1 sin definir.

Sin embargo, una función puede acceder a todas las variables y funciones definidas dentro del ámbito en la cual ha sido definida. Es decir, una función en el contexto global puede acceder a todas las variables definidas en el contexto global.

js
var num1 = 2,
  num2 = 3;

function numbers() {
  return num1 + num2;
}

console.log(num1); // 2

Temas relacionados