variable uncaught not node method error javascript variables definition var

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"; .