Una variable se crea en el momento de declarar/usarlo. Si omite la palabra clave var, la variable se crea automáticamente en el ámbito global. Entonces produces un efecto secundario. Esto generalmente se debe evitar.
Supongamos que utiliza variables globales y luego elige el nombre de la variable que alguna otra parte del software ya ha tomado. Esto conducirá a una situación en la que los fragmentos de código sobrescriben sus valores. Esto produce errores y la mayoría de las veces es difícil de depurar. En su ejemplo, es posible que sobrescriba una variable global x que está utilizando otro software.
El uso de var es también más rápido. Si accede a una variable global, debe escanear todos los ámbitos hasta el global para el nombre de la variable. Al usar var, está ligado a su alcance local.
Es una buena práctica usar siempre use var. O mejor: siempre es bueno seleccionar el alcance más estrecho para sus variables. Ahora tienes globales y var. Una declaración var es visible en toda la función, sin importar dónde la declare. En javascript 1.7, se introdujo una nueva palabra clave: let. Vamos a reducir el alcance 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.
Cualquier variable no declarada con "var" siempre será una variable global. Aquí está la entrada MDC en var: https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Statements/Var – cdmckay
Puede que se vea mejor, pero JavaScript no tiene alcance de bloque, por lo tanto, no importa si declara 'x' dentro o fuera del ciclo 'for'. (JS 1.7 introduce la palabra clave 'let', mira la respuesta de noha.) –
+1 para siempre agrega la var. He visto muchos casos en los que un ciclo que usa 'i' llama a una función con su propio bucle usando 'i', donde ambos actualizan una 'i' global. En algunos casos, puede pasar desapercibido pero ensuciar completamente las cosas en otros. – scunliffe