La primera regla de oro:
JS no tiene un alcance de nivel de bloque (puede implementarlo solo con cierres u otros métodos), solo alcance a nivel de función. Las variables fuera de la función se pueden encontrar en la función, pero las variables dentro de la función no se pueden encontrar afuera.
Firsttry:
¿Por qué es esto? ?
var a = 10; function aaa () {// step-4Alert (a); // step-5-> ejecutar alerta, en este momento solo puede encontrar el exterior a = 10 para que el cuadro emergente 10} function bbb () {// step-2var a = 20; aaa (); // step-3} // definiendo la función es inútil, la llamada es verdadera, aquí es verdad, el paso-1;De hecho, todos entienden el principio, debe ser solo una cuestión de errores fáciles, y todo cambiará.
Secondry:
¿Por qué es esto? Porque cuando A se asigna B, B aún no está definido, por lo que A está indefinido y B es 10.
Artículo 2 del Código de Oro:
La búsqueda de variables es el principio de proximidad. Para encontrar las variables definidas por VAR, cuando no se encuentran cerca, luego busque la capa externa.
mirar:
¿Por qué es esto? Hay dos razones para esto: una es el análisis previo y el otro está buscando cerca.
var a = 10; función aaa () {alerta (a); // Undefined. Al buscar A, buscará en la función. Debido al efecto de pre-pares, A está indefinido en este momento, por lo que nunca buscará el exterior 10 var a = 20;/*Preparación var aalert (a); var a = 20;*/} aaa ();atención:
Verifiquemos el segundo elemento. Aunque es el principio de proximidad, es encontrar la variable declarada por var cerca. Esto se debe a que las variables declaradas por VAR son globales. Aquí, el valor de A se modifica. Entonces, lo anterior se debe a que el A VAR no se encuentra en la función, así que salí y lo encontré tan pronto como busqué, por lo que A lo alertó 10; Pero la verdad es que después de a = 20, A es de hecho 20, pero aún no se ha ejecutado cuando se alerta ~~
Ver ~
El siguiente ejemplo verifica aún más el alcance de la función de JS:
Esto se debe a que cuando está alerta (a), A en la función BBB es de hecho 20, pero es local a la alerta de oración (a) en este momento. Alerta (a) No puede encontrar una en la función BBB, por lo que no puede encontrar una en la función AAA, por lo que sale y encuentra 10.
Artículo 3 del Código de Oro:
Cuando los parámetros se duplican con variables locales, la prioridad es equivalente.
ejemplo:
También: al pasar los parámetros, el tipo básico pasa el valor, y el tipo de referencia pasa la referencia. (Pero no es el caso después de la reasignación)
var a = 5; var b = a; b += 3; alerta (a); // 5var a = [1,2,3]; var b = a; b.push (4); alerta (a); // [1,2,3,4];
No hay problema con el código anterior, pero lo siguiente es diferente.
Debido a que B se reasigna, no apunta a A.
Además, el alcance de los parámetros y las variables es similar:
Compare estos dos:
Los parámetros anteriores son tipos básicos, y solo se pasan los valores. El siguiente es un tipo de referencia: (también también incluye el caso de reasignación)