Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Verständnisfrage zu Closures [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Verständnisfrage zu Closures


 
Kropff
02-09-2010, 21:03 
 
Also ich habe folgenden Code:
function funktionA()
{
var variable = 'bla';
function funktionB()
{
alert (variable);
}
funktionB();
}
funktionA();
Anstelle von function funktionB() kann ich ja auch so was schreiben:

funktionB = function()
{
alert (variable);
}

oder

var funktionB = function()
{
alert (variable);
}

Also. Bei einem funktionB = function() hängt die Funktion nach dem Aufruf von funktionA() im window-Objekt. Um das zu verhindern, wird da wohl die Variante var funktionB = function() genommen, um das zu verhindern.

Aber! Und jetzt kommt meine eigentliche Frage. Was ist denn nun der Unterschied zwischen var funktionB = function() und function funktionB()? Auf beide kann man nicht direkt zugreifen und sie hängen auch nicht im window-Objekt.

Peter

PS: Ich werde diese Sprache wohl nie ganz begreifen. :{

 
wahsaga
02-09-2010, 21:15 
 
Was ist denn nun der Unterschied zwischen var funktionB = function() und function funktionB()?
Im großen und ganzen ist der Unterschied: Es gibt keinen.

 
Kropff
02-09-2010, 21:34 
 
Im großen und ganzen ist der Unterschied: Es gibt keinen.
Und was soll dann der Sch***ß? Ich bastel hier schon eine Stunde herum, um endlich mal einen Unterschied zu finden und dann das. Wieso einfach, wenn es auch kompliziert geht?

Peter

 
wahsaga
02-09-2010, 21:37 
 
Und warum willst du auf Teufel komm raus Unterschiede finden, wenn beides funktioniert ...? :-)

 
Kropff
02-09-2010, 21:42 
 
Und warum willst du auf Teufel komm raus Unterschiede finden, wenn beides funktioniert ...? :-)
Ich frag mich nur, warum es dann zwei(!) Schreibweisen für ein die selbe Sache gibt. Außerdem muss man bei JavaScript ja immer auf eine Überraschung gefasst machen. Wie zum Beispiel das this in einer lokalen Funktion. Weist dann auf das window-Objekt hin und keine Sau weiß warum. Naja, ist halt JavaScript. *kopfschüttel*

Peter

 
AmicaNoctis
02-09-2010, 22:53 
 
Ich frag mich nur, warum es dann zwei(!) Schreibweisen für ein die selbe Sache gibt.

Es gibt Unterschiede zwischen diesen beiden Varianten. Die mit var erzeugt eine anonyme Funktion, die an eine Variable gebunden ist. Die mit function name () erzeugt keine anonyme Funktion. Den Unterschied kann man erkennen, wenn man mit der Caller-Eigenschaft (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/caller) rummacht.

Außerdem muss man bei JavaScript ja immer auf eine Überraschung gefasst machen. Wie zum Beispiel das this in einer lokalen Funktion.

Auch das ist gut dokumentiert und folgt Regeln die zwar anders als in PHP sind, denen aber dennoch eine nachvollziehbare Logik innewohnt.

ECMAScript Language Specification (HTML version) (http://bclary.com/2004/11/07/ecma-262.html#a-10.1.7)
ECMAScript Language Specification (HTML version) (http://bclary.com/2004/11/07/ecma-262.html#a-10.1.4)
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/this

 
onemorenerd
02-09-2010, 23:02 
 
https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope

 
Kropff
03-09-2010, 09:54 
 
Es gibt Unterschiede zwischen diesen beiden Varianten. Die mit var erzeugt eine anonyme Funktion, die an eine Variable gebunden ist. Die mit function name () erzeugt keine anonyme Funktion. Den Unterschied kann man erkennen, wenn man mit der Caller-Eigenschaft (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/caller) rummacht.
Da bin ich ja erleichtert, dass es doch einen Unterschied gibt.

Auch das ist gut dokumentiert und folgt Regeln die zwar anders als in PHP sind, denen aber dennoch eine nachvollziehbare Logik innewohnt.
Naja, ist wohl Ansichtssache. Nur weil etwas spezifiziert wurde, heißt das noch lange nicht, dass es logisch oder sinnvoll ist. Ich denke da nur an die collapsing margins.

Peter

Erinnerung an mich selbst: Niemals, never ever anyway, Kommentare vor dem HTML-Element einfügen!!!
Siehste, ist sicher auch irgendwo spezifiziert und folgt einer bestimmten Logik. Aber dich treibt es in den Wahnsinn. :)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:50 Uhr.