ReferenceError: "x" não está definido

Mensagem

ReferenceError: "x" is not defined

Tipo de erro

O que deu errado?

Há uma variavel inexistente referenciada em algum lugar. Essa variável precisa ser declarada ou você precisa ter certeza que ela está disponível no seu atual script ou escopo.

Nota: Quando carregar uma biblioteca (como o JQuery) tenha certeza que ela está carregada antes que você acesse as variáveis dela, como "$". Coloque na tag <script> para carregar a biblioteca antes do seu código usá-lo.

Exemplos

Variável não declarada

js
foo.substring(1); // ReferenceError: foo is not defined

A variável "foo" não está definida em lugar nenhum. Ela precisa ser uma string e assim o método String.prototype.substring() irá funcionar.

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

Escopo Errado

Uma variável precisa estar disponível no atual contexto de execução. Variáveis definidas dentro de uma function não podem ser acessadas de outros lugares fora da função, porque a variável é definida apenas no escopo da função

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

console.log(num1); // ReferenceError num1 is not defined.

Entretanto, uma função pode acessar todas as variáveis e funções definidas dentro do escopo no qual elas estão definidas. Em outras palavras, uma função definida no escopo global pode acessar todas as variáveis no escopo global.

js
var num1 = 2,
  num2 = 3;

function numbers() {
  return num1 + num2;
}

console.log(num1); // 2

Veja também