Gott in Javascript - CompatMode?

sh0x

Erfahrenes Mitglied
Hallo Leute,

habe eben den wahren Javascript-Gott gefunden:
http://www.walterzorn.com

Schon die ersten Zeilen seines Tooltip-Codes verstehe ich nicht:

Code:
var tt_db = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body? document.body : null,

Was genau macht obiger Code?
Ich weiß soviel, dass es verschiedene Browsermodi je nach verwendetem Doctype gibt. Weiß einer noch ein wenig mehr oder kann mir den Code erklären?
Auch verstehe ich hier den 3-teiligen Fragezeichenoperator nicht.
Ist die normale Verwendung nicht (Bedingung) ? (WENN TRUE TU DAS) : (WENN FALSE TU DAS)
Warum zur Hölle hat er da nochmal ein Fragezeichen und Doppelpunkt drin?
 
Gut zu wissen.

Weiterhin definiert der Javascript-Gott folgende Variable:

Code:
var tt_op = !!(window.opera && document.getElementById);

Ok, ich verstehe, dass diese Variable auf true stehen soll, wenn es sich um einen Operabrowser handelt. Aber warum zur Hölle sind da 2 Ausrufezeichen davor? Hat das irgendeinen Sinn?
 
Zuletzt bearbeitet:
Sorry, irgendwie habe ich das vergessen *g*

Also so steht es in seinem Code:


var tt_op = !!(window.opera && document.getElementById);


Ich habe schonmal ausprobiert die Ausrufezeichen wegzulassen. Dann kommt überall ein "undefined". Also schätze ich mal, dass die Verwendung der 2 Ausrufezeichen, also die doppelte Negation, ein Trick ist.
Weißt du mehr? :-)

ANMERKUNG: Ich hatte doch nicht die Ausrufezeichen vergessen. Aber der CODE-Container schneidet die doppelte Negation einfach weg.
 
Hi,

kleiner Hinweis und ein SORRY :)

In unserer Forensoftware wurde bis eben jedes doppelte Ausrufezeichen zensiert.
Grund: Es gibt einfach zuviele User, die andauernd ihre Probleme mit endlosen
Ausrufezeichen "wichtiger" zu machen versuchen.

Ich hab die Zensur nun auf 3 Ausrufezeichen geändert.

Danke fürs Verständnis und bitte den Beitrag oben nochmal editieren, um die Ausrufezeichen einzufügen.

Merci
Martin
 
Er will damit sicher gehen, dass die Variable einen booleschen Wert hat(true oder false)
"undefined" ist keine boolescher Wert, auch wenn es in der Regel von JS als "false" interpretiert wird.

@Martin....Danke, das ging ja fix :)
 
Martin Schaefer hat gesagt.:
Hi,

kleiner Hinweis und ein SORRY :)

In unserer Forensoftware wurde bis eben jedes doppelte Ausrufezeichen zensiert.
Grund: Es gibt einfach zuviele User, die andauernd ihre Probleme mit endlosen
Ausrufezeichen "wichtiger" zu machen versuchen.

Super, danke! Das ist ein Service :-)


Sven Mintel hat gesagt.:
Er will damit sicher gehen, dass die Variable einen booleschen Wert hat(true oder false)
"undefined" ist keine boolescher Wert, auch wenn es in der Regel von JS als "false" interpretiert wird.
Aber warum setzt ein doppeltes Negieren die Variable auf einmal auf den Typ "boolean"?
Ist das so ein Trickgriff? Oder kann man das auch noch geschickter/einfacher/einleuchtender machen? Interessiert mich jetzt einfach mal so :-(
 
sh0x hat gesagt.:
Ist das so ein Trickgriff? Oder kann man das auch noch geschickter/einfacher/einleuchtender machen? Interessiert mich jetzt einfach mal so :-(

Einfacher gehts kaum.
Einleuchtender wäre vielleicht:
Code:
if(window.opera && document.getElementById){tt_op = true;}
else{tt_op = false}
 
Vielleicht habe ich mich nicht einleuchtend genug ausgedrückt.
Das passiert mir öfter - sorry :)

Ich möchte wissen, warum die beiden Ausrufezeichen auf einmal den Variablentyp auf boolean ändern.

Wenn ich ein Objekt abfrage:
var docall = document.all;

Dann steht doch in docall auch ein true, wenn es das Objekt gibt und ein false, wenn es das Objekt nicht gibt, oder irre ich mich da?

Also ist es ein konventioneller Javascript-Bestandteil, mittels doppelter Negation mit Ausrufezeichen, eine Variable zu boolean zu konvertieren?

Habt ihr da noch einen weiterführenden Link oder so?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück