Esto es solo una situación de alcance estándar: no importa el hecho de que sea una expresión de función anónima pasada como parámetro a otra función. Tenga en cuenta que dentro de su función performAction()
(que no se muestra) no tendrá acceso al str
que es el parámetro de la función de devolución de llamada - si performAction()
hace referencia a str
obtendrá la variable global "internet" (o su propio local) str
si está definido).
Los parámetros de una función son, por alcance, los mismos que las variables locales de esa función, lo que significa que ocultan otras variables del mismo nombre del ámbito exterior, pero aún se puede acceder a variables con nombres diferentes incluso si se alcance.
Dónde podría resultar confuso es que si haces algo como esto:
var str = "internet";
(function(str) {
console.log(str); // "internet"
str = "local param";
console.log(str); // "local param"
})(str);
console.log(str); // "internet"
En ese caso, tengo una función con un parámetro llamado str
pero cuando lo llamo yo estoy de paso en una diferente str
. Tenga en cuenta que cambiar str
dentro de esa función solo cambia el str
local, no el global. Son dos variables diferentes ...
No, simplemente no olvide que en realidad no es la misma variable. –
Muchas gracias! –