hallo dog.je
erstmal vielen dank für dein posting!
dass deartige ausdrücke wirklich zu nicht-string-datentypen „evaluieren“ können ist mir neu. ist ja interessant zu hören.
ja wenn in der zweiten zeile der wert einer
variablen zugewiesen wuerde, oder vor dem typeof ein return
stuende. oder ist der code aus einer funktion, und die zeile
steht am ende und macht automatisch einen return?
jetzt nochmals zur zweiten zeile. ich hab wohl etwas zu viel von code entfernt, jedoch muss ich gestehen, dass ich deine antwort selbst dann nicht so ganz richtig verstehen kann. jetzt erstnochmal ein mehr oder weniger vollständiger code:
function Tracking()
{
var CONTENTSECTION= „“;
var CUSTOMDATA= „“;
var osp_URL= document.URL
function A(S, K)
{
U+="&"+S+"="+escape(K);
}
var U=„http“+(document.URL.indexOf(‚https:‘)==0?‚s‘:’’)+"://stat.onestat.com/asp/stat.asp?tagver=1&sid=xxxxxxxxx";
A( „url“,typeof(osp_URL)== „string“ ? osp_URL : document.URL);
A( „rf“, parent==self ? window.document.referrer : top.document.referrer);
A( „ul“, navigator.appName==„Netscape“ ? navigator.language : navigator.userLanguage);
A( „section“, typeof(CONTENTSECTION)== „string“ ? CONTENTSECTION : „“);
A( „custom“, typeof(CUSTOMDATA)== „string“ ? CUSTOMDATA : „“);
}
letztendlich findet hier ja doch eine variablenzuweisung statt. welchen einfluss hat die aber.
szenario 1:
es handelt sich wirklich um einen string: dann wird bei der dem exklusiven-oder der erste „ausdruck genommen“ sprich osp_URL und an die funktion zurückgeliefert, bzw der entsprechenden variable zugewieesn. nach dem es eh ein string ist, ist alles ok.
szenario2:
es handelt sich um einen unbekannten datentyp „xyunbekannt“: bei dem exklusiven oder wird auf den zweiten ausdruck „verzweigt“. der liefert doch dann allerdings exakt genau das _selbe_ ergebnis. sprich diesesn unbekannten datentypen und weist den der Funktion bzw. variable zu.
müsste dann nicht z.b. gerade bei dem zweiten ausdruck sowas stehen wie du das schon geschrieben hast. z.b.
new String(document.URL); sprich sicherstellen dass es eben ein string ist. sonst wird doch gerade der unbekannte datentyp zurückgeliefert und somit ist auch von der logik diese typeof abfrage gänzlich unnötig, weil als ergebnis so oder so entweder string oder der unbekannte datentyp rauskommen können.
(auch wird eine derartige abfrage nicht konsequent eingesetzt. bei windows.document.referrer (und den anderen) müsste dann ja ebenfalls eine derartige string-überprüfung stattfinden).
ehrlich gesagt, ich verstehe das mit den CONTENTDATA und CUSTOMSECTION auch nicht. stellen derartige abfragen nicht die ganze scriptsrache in frage. die werden mit einem leerstring initialisiert. das ganze auch gleich noch zwei mal. was soll denn in so einer variable drinstehen können wenn sie initialisiert wird. und welcher unterschied soll dann auch zusätzlich noch zwei variablen liefern.
vielen dank
thomas