while para length infinito for bucle array javascript

length - para en javascript



Ámbito variable en Javascript para bucle. (3)

Cuál es la diferencia entre:

function bar() { for (x=0; x< 100; x++) {} }

Y

function bar() { var x; for (x=0; x< 100; x++) {} }

Si x no fue declarado fuera de esa función, ¿entonces no fue una variable global? Siempre me pregunto esto porque generalmente no declaro variables desechables que se usan solo en un bucle, pero me pregunto si esto podría romper la comparabilidad en un navegador o algo así.


El primer ejemplo agregará o modificará la variable global x, que generalmente se debe evitar si no es el resultado deseado.

Si bien su segundo ejemplo funciona como se desea (sin efectos secundarios), una alternativa que se ve mejor en mi opinión sería

function bar() { for (var x=0; x< 100; x++) {} }


Recuerde siempre, en JavaScript, los ámbitos están definidos por funciones. En el ejemplo

function () { var x = 15; bar(); function bar() { for (x=0; x< 100; x++) {} } //here x will be 100 }

Accidentalmente podrías acceder a un alcance mayor. Lo que quiero decir de mayor alcance es una función de envoltura o window.x (si no hay más funciones de envoltura). Es mucho mejor seguir el segundo ejemplo si solo quieres usar x para tu bucle.

function () { var x = 15; bar(); function bar() { var x; for (x=0; x< 100; x++) {} } //here x will be 15 }


Se crea una variable en el momento en que la declara / utiliza. Si omite la palabra clave var, la variable se crea automáticamente en el ámbito global. Así que produce un efecto secundario. Esto generalmente se debe evitar.

Suponga que usa variables globales y luego eligió el nombre de la variable que alguna otra parte del software ya ha tomado. Esto conducirá a una situación en la que partes de código sobrescriben sus valores. Esto produce errores y la mayor parte del tiempo es difícil de depurar. En su ejemplo, podría sobrescribir una variable global x que otro software está usando.

Usar var también es más rápido. Si accede a una variable global, tiene que escanear todos los ámbitos hasta el global para el nombre de la variable. Mediante el uso de var está vinculado a su ámbito local.

Es una buena práctica utilizar siempre var. O mejor: siempre es bueno seleccionar el ámbito más estrecho para sus variables. Ahora tienes global y var. Una declaración var es visible en toda la función sin importar dónde la declare. En javascript 1.7 hay una nueva palabra clave introducida: dejar. Deja que el ámbito se acorte aún más. Si declara su bucle for con

for(let x = 0; x < 100; i++) {}

que x es visible solo dentro del bloque {}.