Gibt es ein Problem mit einer privaten Variablen str
und einer Callback-Funktion mit einem Parameter mit demselben Namen?
Danke!
Dies ist nur eine Standard-Scope-Situation - die Tatsache, dass es sich um einen anonymen Funktionsausdruck handelt, der als Parameter an eine andere Funktion übergeben wird, spielt keine Rolle. Beachten Sie, dass es innerhalb Ihrer performAction()
-Funktion (die Sie nicht anzeigen) keinen Zugriff auf den str
hat, der der Parameter der Callback-Funktion ist - wenn performAction()
auf str
verweist, wird der globale " Internet "Variable (oder seine eigene lokale str
falls definiert).
Die Parameter einer Funktion sind für Scope-Zwecke die gleichen wie die lokalen Variablen dieser Funktion, dh sie maskieren andere Variablen desselben Namens aus dem äußeren Geltungsbereich - Variablen mit unterschiedlichen Namen können jedoch immer noch verwendet werden, auch wenn sie in einem größeren Bereich definiert sind .
Wo es verwirrend werden könnte, ist Folgendes:
%Vor% In diesem Fall habe ich eine Funktion mit einem Parameter namens str
, aber wenn ich sie anrufe, gebe ich ein anderes str
ein. Beachten Sie, dass das Ändern von str
innerhalb dieser Funktion nur das lokale str
ändert, nicht das globale. Sie sind zwei verschiedene Variablen ...
Es gibt technisch kein Problem damit. Die Funktion protokolliert den str
, der sich derzeit im Bereich befindet (Ihr Parameter).
Aus naheliegenden Gründen wird dies nicht als eine gute Idee betrachtet. Zumindest macht es unlesbaren Code.
Tags und Links javascript scope