JavaScript: Callback-Funktionsparameter mit dem gleichen Namen wie andere Variable?

8
%Vor%

Gibt es ein Problem mit einer privaten Variablen str und einer Callback-Funktion mit einem Parameter mit demselben Namen?

Danke!

    
Filo Stacks 10.12.2011, 01:10
quelle

2 Antworten

11

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 ...

    
nnnnnn 10.12.2011, 02:02
quelle
7

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.

    
James Hill 10.12.2011 01:15
quelle

Tags und Links