Este artículo analiza la diferencia entre VAR y no VAR en JavaScript. El alcance de las declaraciones variables en JS se basa en funciones, por lo que a menudo vemos cómo evitar la contaminación variable global.
(función(){ // ... })();Dentro de una función, las variables con var y sin var son diferentes. Hay VAR que declaran variables locales, y no hay vars, variables globales declaradas, por lo que puede exponer las cosas de la interfaz al exterior.
Al declarar variables en el alcance global, VAR y VAR parecen iguales. Sabemos que las variables globales declaradas son las propiedades de las ventanas. Ya sea que sean iguales, descubrimos la diferencia a través del método de consulta de atributos proporcionado por ECMASCRPIT5.
var ffff = 2; Window.fffa = 3; ffb = 4; this.ffc = 4; var fftx = object.getOwnPropertyDescriptor (ventana, 'ffff'); // configurable: falso, enumerable: verdadero, valor: 2, Writable: verdadero var ffatx = object.getownpropertyDescriptor (ventana, 'fffa'); // configurable: verdadero, enumerable: Verdadero, Valor: 2, Writable: True Var ffBtx = Object.getOwnPropertyDescriptor (Window, 'fffa'); // configurable: verdadero, enumerable: Verdadero, Valor: 2, Writable: True Var ffBtx = Object.getOwnPropertyDescriptor (Window, 'FFB'); // configurable: verdadero, enumerable: Verdadero, Valor: 2, Writable: True Var ffctx = Object.getOwnPropertyDescriptor (Window, 'FFC'); // Configurable: Verdadero, enumerable: Verdadero, Valor: 2, Writing: True
A través de lo anterior, encontramos que todavía había una diferencia. Utilizamos Delete para verificar que el atributo con la configuración False no se puede eliminar. Es decir, las propiedades del objeto global declarado a través del var variable no se pueden eliminar. También encontraremos que las propiedades del objeto global creado por la declaración de función no se pueden eliminar.
eliminar ffff; // no puede eliminar eliminar fffa; // puede eliminar eliminar ffb; // puede eliminar eliminar ffc; // puede eliminar
La conclusión es que hay una diferencia entre agregar VAR y declarar variables globales sin VAR.
Es legal e inofensivo declarar repetidamente una declaración utilizando una declaración VAR. Si la declaración se repite y se proporciona la asignación, no es diferente de la declaración de asignación general. Si intenta leer una variable que no se ha declarado, JS informará un error.
Las variables declaradas o funciones internas dentro del alcance de JavaScript son visibles en el cuerpo de la función. Es decir, la función ya puede estar disponible antes de que se define. Hay dos formas de definir una función, una expresión de definición de funciones y la otra declaración de declaración de función.
// Función Definición de expresión var fns = function () {// ...}; // Función Declaración de declaraciones Función fns () {// ...}La declaración de declaración de función "fue avanzada" en la parte superior del script externo o el alcance de la función externa, por lo que el código que aparece antes de nuevo puede llamar a una función declarada una función declarada por el código que aparece antes. En las expresiones de definición de función, la declaración de la variable avanza, pero la asignación de la variable no avanza, por lo que las funciones definidas en la expresión no se pueden llamar antes de la definición de la función.
(function () {testa (); // imprime testa testb (); // Informe un error: se solicita que undefinado no es una función console.log (testc); // undefined, si se mueve a lo anterior, está bien para hacer la función teta () {console.log ("teta");} var testb = functy () {console.log ("tesb"); "testc";}) ();Por supuesto, cuando declaramos variables y funciones, debemos cumplir con las especificaciones básicas, y las variables y las declaraciones de funciones deben estar por adelantado.