Переменная создается во время ее объявления / использования. Если вы опустите ключевое слово var, переменная будет создана автоматически в глобальной области видимости. Таким образом, вы производите побочный эффект. Этого, как правило, следует избегать.
Предположим, вы используете глобальные переменные, а затем выбрали имя переменной, которую уже занял какой-то другой фрагмент программного обеспечения. Это приведет к ситуации, когда куски кода перезаписывают свои значения. Это приводит к ошибкам и большую часть времени трудно отладить. В вашем примере вы можете перезаписать глобальную переменную x, которую использует другое программное обеспечение.
Использование var также быстрее. Если вы обращаетесь к глобальной переменной, она должна сканировать все области, вплоть до глобальной, на предмет имени переменной. Используя var, он привязан к вашей локальной области видимости.
Рекомендуется всегда использовать var. Или лучше: всегда хорошо выбрать наиболее узкую область видимости для ваших переменных. Теперь у вас есть глобальный и вар. Объявление var видно во всей функции независимо от того, где вы ее объявили. В JavaScript 1.7 введено новое ключевое слово: let. Пусть сужает рамки еще больше. Если вы объявляете цикл for с
for(let x = 0; x < 100; i++) {}
чем x виден только внутри блока {}.