scope variable global de javascript

Entonces escucho que la variable en js que se inicializó sin una "var" será global. asi que:

$(document).ready(function(){ function foo(){ //since i'm not using "var", will this function become global? } var bar = function(){ //is this the better way to declare the function? } }) 

Si es global, por qué no puedo acceder a él en la console. Si no es global, y su scope está en la function, ¿omitir "var" costará algunas actuaciones? Gracias.

Solo las variables declaradas sin var vuelven globales, esto no se aplica a las funciones.

Sin embargo, puedes declarar a foo así:

 foo = function() {} 

y debe ser global.

Por lo general, no se recomienda omitir var por estos motivos (fuera de la cabeza):

  • La resolución variable comienza en la forma más local y se dirige hacia search en el espacio de nombres global, lo que lo hace más lento. Mucho más lento en ciertos browseres.
  • Tiende a tener eventualmente conflictos de nombres al contaminar el espacio de nombres global. Uno de los peores ofensores sería, por ejemplo, for(i = 0; i < arr.length; i++) (tenga en count la falta de var )

Es posible que desee declarar funciones utilizando var debido a una function de idioma denominada elevación

Por cierto, si eliges declarar funciones con var , te recomiendo que lo hagas de esta manera:

 var foo = function foo() {} 

porque da a la function un "nombre" en lugar de ser tratada como una function anónima, lo que ayudará con la debugging. La mayoría de las personas no hacen esto y declaran usar la function , creo.