javascript - node - uncaught referenceerror: $ is not defined
ReferenceError: la variable no está definida (3)
Consiguió el error (en la función init) con el siguiente código;
"use strict" ;
var hdr ;
function init(){ // called on load
hdr = document.getElementById("hdr");
}
... mientras usa el navegador de valores en un Samsung galaxy Fame (teléfono de mierda que lo convierte en un buen probador) - userAgent; Mozilla / 5.0 (Linux; U; Android 4.1.2; en-gb; GT-S6810P Build / JZO54K) AppleWebKit / 534.30 (KHTML, como Gecko) Versión / 4.0 Mobile Safari / 534.30
El mismo código funciona en cualquier otro lugar que probé, incluido el navegador de valores en un teléfono HTC más antiguo: userAgent; Mozilla / 5.0 (Linux; U; Android 2.3.5; es-gb; HTC_WildfireS_A510e Build / GRJ90) AppleWebKit / 533.1 (KHTML, como Gecko) Versión / 4.0 Mobile Safari / 533.1
La solución para esto fue cambiar
var hdr ;
a
var hdr = null ;
Me encontré con este problema a veces, pero todavía no sé qué lo causa.
Tengo este script en la página:
$(function(){
var value = "10";
});
Pero el navegador dice "ReferenceError: el valor no está definido". Sin embargo, si voy a la consola del navegador y escribo
10
o
var value = "10";
cualquiera de ellos puede devolver 10. ¿Cuál es el problema con mi script?
Edición: simplemente deshacerse de "var" puede resolver el problema.
Las variables están disponibles solo en el alcance que las definió. Si define una variable dentro de una función, no podrá acceder a ella fuera de ella.
Defina la variable con var
fuera de la función (y por supuesto antes de ella) y luego asigne 10
dentro de la función:
var value;
$(function() {
value = "10";
});
console.log(value); // 10
Tenga en cuenta que no debe omitir la primera línea en este código ( var value;
), ya que de lo contrario está asignando un valor a una variable no definida. Esta es una mala práctica de codificación y no funcionará en modo estricto. Definir una variable ( var variable;
) y asignar un valor a una variable ( variable = value;
) son dos cosas diferentes. No puede asignar valor a la variable que no ha definido.
Puede ser irrelevante aquí, pero $(function() {})
es un acceso directo para $(document).ready(function() {})
, que ejecuta una función tan pronto como se carga el documento. Si desea ejecutar algo de inmediato, no lo necesita; de lo contrario, tenga en cuenta que si lo ejecuta antes de que se haya cargado el DOM, el valor no estará undefined
hasta que se haya cargado, por lo tanto console.log(value);
colocado justo después de $(function() {})
se devolverá undefined
. En otras palabras, se ejecutaría en el siguiente orden:
var value;
console.log(value);
value = "10";
Ver también:
Se declara dentro de un cierre, lo que significa que solo se puede acceder allí. Si quieres una variable accesible globalmente, puedes eliminar la var
:
$(function(){
value = "10";
});
value; // "10"
Esto es equivalente a escribir window.value = "10";
.