Ich war auf der Suche am Ausgang von einem paar Sachen aus UglifyJS und über einige Codes wie folgt geschehen:Warum funktioniert dieses JavaScript?
var a = 0;
var b = function() {
return function() {
a++;
}(), 'Hello, World'
}();
Nach diesem Code ausgeführt a
ist 1
und b
ist die Zeichenfolge Hello, World!
.
Auf den ersten Blick scheint b
undefined
zu sein, da es aussieht, als ob das Ergebnis einer Funktion ohne Rückgabewert zurückgegeben wird, aber gefolgt von einem Komma und einem String-Literal.
Warum funktioniert das?
Und warum führt UglifyJS nicht einfach die anonyme Funktion aus und gibt dann Hello, World!
als nächste Anweisung zurück?
Eine bessere Frage könnte sein, warum Sie (oder wer) Javascript auf diese Weise schreiben? Code sollte eindeutig sein. –
@CoreyOgburn es ist nicht mehrdeutig, wenn Sie wissen, was der Komma-Operator tut. – AD7six
'var a = (" rofl "," aber sein lol! ");' – jAndy