La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<meta charset = "utf-8">
<title> Insertar título aquí </title>
<script type = "text/javaScript">
/*
* 1. Todas las variables en JS son comunes.
2.js no tiene variables estáticas
3. Cierre: las variables fuera de la función se pueden llamar dentro de la función; De lo contrario, no puede
*/
var r = 10;
función test1 () {
var r2 = "ABC";
// Alerta (R)
}
// alerta (r2); // r2 dentro de la función a la que no se puede acceder
test1 ();
// Las funciones anidadas están bien
función test2 (num1) {
función test3 (num2, num3) {
return num2+num3+num1;
}
Test de retorno3 (10,20)
}
// alerta (test2 (30));
// -------------------------------------------------------------------------------------------------------------------------
función testFun () {
var r = 1;
var arr = [];
para (var x = 0; x <3; x ++) {
r ++;
arr [x] = function () {
regresar r;
}
}
regresar arr;
}
alerta ("testFun:"+testFun ());
var arr2 = testFun ();
alerta ("arr:"+arr2 [0]);
alerta ("arr:"+arr2 [1] ());
alerta ("arr:"+arr2 [2] ());
// ============ Las tres cajas emergentes anteriores son todas 4 =================================
/*Analizar las razones:
¿Entender qué funciones hay en JavaScript?
Una función es un bloque ejecutable de código, y una función también puede estar representada por una variable, como la segunda forma de definir una función.
var add = nueva función ("a", "return a+10"); La esencia subyacente es el puntero del nombre de la función
Este código ejecutable creado para variables.
* Primero, después de ejecutar la función TestFun, lo mismo se almacena en arr [0], arr [1] y arr []
Función de bloque de código ejecutable () {
Devolver r
} En otras palabras, los tres anteriores son solo variables de función. Para ejecutarlos, solo necesita agregar () después del nombre de la variable y estará bien.
Y en este momento el valor de R es 4
Al ejecutar arr [0] () es equivalente a ejecutar el código en este bloque de código.
Entonces, el resultado final devuelve R, por supuesto, devuelve 4.
*/
</script>
</ablo>
<Body>
</body>
</html>