scherzkeks: externes script stoppt laden

Beitrag lesen

Also erstmal: Ich habe den Fehler gefunden: UltraEdit aendert typeof automatisch in typeOf. Ich hatte also recht mit "ist nicht meine Schuld" ^^.
Dabei wird da dann immer der Fehler erzeugt.

Bei mir wars aber so:

alert("Hallo");         // wird ausgefuehrt
    var foo = "bar";        // wird nicht ausgefuehrt
    alert(foo);             // wird nicht ausgefuehrt
    var baz = fooo + "baz"; // erstes Auftreten von fooo, wird nicht ausgefuehrt


>   
> Das ist Quatsch, hast du das ausprobiert?  
>   
> Ich bekomme alert[Hallo] und dann alert[bar] und dann Fehler: fooo is not defined  

Genau! Bei mir dachte ich eben - und deshalb habe ich mich gewundert und hier rein gepostet -, dass eine einfache Variablendefinition nicht funktioniert. Was ich auch tat, es ging nicht. typeOf hatte ich immer wieder verbessert (und mich gewundert, warum da immer wieder eine alte Version der Datei sei, als mir der Fehler beim oeffnen auffiel.). Sobald ich mit dem Cursor (nicht Mauszeiger, sondern Textcursor) von der Stelle "weggehe" verschlimmbessert UltraEdit mich. Wenn es mal ging (, weil ich mit dem Cursor bis zum Speichern an der Stelle blieb?) und ich danach die zuvor entnommene Trennvariable wieder einfuehren oder sonst etwas aendern will, muss ich die Datei neu oeffnen oder meinen Cursor "wegtun". In beiden Faellen wird typeof verschlimmbessert. Ausserdem habe ich jetzt alle Zeichen innerhalb der Strings maskiert.  

>   
> > > Warum fügst Du nicht jeden zusätzlichen Begriff in einer eigenen Zeile ein, etwa in der Form  
> > >   
> > >     `+ trenner + "Begriff"`{:.language-javascript}  
> > >   
> ...  
>   
> > > Dein Code wäre wesentlich leichter lesbar, leichter wartbar und solche Fehler würden Dir sofort auffallen.  
> > Moeglich... ich habe immer Angst vor Zeilenumbruechen in Strings und allgemein mitten in JavaScript-Anweisungen, obwohl ja jedes white-space mehr oder weniger gleich behandelt werden sollte, oder?  
>   
> Es geht nicht um Zeilenumbrüche im String, sondern das du den String lesbar verkettest. Zeilenumbrüche im String sind nicht erlaubt.  

Ich habe nichtm mitgedacht.  ;)  

>   
> Vinzenz meint so was:  
> [...]  
> Innerhalb der Anfürhrungszeichen dürfen natürlich keine Umbrüche sein.  

Deshalb wunderte ich mich gerade. (gerade == als ich das Post schrieb).  
  
Ich habs jetzt so:  
~~~javascript
  
alleBegriffeImString = "Begriff000" + trennervar18 +  
"Begriff001" + trennervar18 +  
"Begriff002" + trennervar18 +  
"Begriff003" + trennervar18 +  
"Begriff004" + trennervar18 +  
"Begriff005" + trennervar18 +  
"Begriff006" + trennervar18 +  
"Begriff007" + trennervar18 +  
"Begriff008" + trennervar18 +  

usw.

Vielen Dank nochmal fuer eure Aufmerksamkeit: es lag nicht nur an UltraEdit (typeOf statt typeof) (die Version  v. UltraEdit des 2003 erschienenen DHTLM-Referenzbuches von Stefan (Muenz, versteht sich))

[...]
Du kannst auch Rückgabewerte definieren

Stimmt. Die weide ich jedoch i.d.R. sowieso Variablen zu. (So viele (kleine) (Zwischen)Schritte wie moeglich, sodass alert()s dazwischen zeigen, bis wo es funktioniert - ich dachte uebrigens immer, typeOf haette funktioniert und als Rueckgabewert nicht den Typen des Rueckgabewerts der inneren alert()-Box, sondern den/die/das Literal innerhalb der inneren alert()-Box zurueckgegeben - das haette ich als naechstes gefragt)

und Block ist falsch, JS kennt nur den Unterschied zwischen innerhalb einer Funktion und ausserhalb.

C und/oder Java kennen aber Bloecke, oder? (kann weder noch.)

Ausserdem gibt es noch Objekte. Globale Variabel nur in Ausnahmefällen nötig, vor allem in kurzen Skripten.

So ist es z.B. zur Fehleranalyse gut, wenn fehlertraechtige Zaehler auch (temporaer) global sind. (Fuer onError-Fehlerbehandlung)

Das halte ich auch für Unsinn.
Bei Zählern kommt es in erster Linie auf die Grenzen an, die du überprüfen musst und innerhalb einer Schleife natürlich die Werte/Objekte/Funktionen aber ein Zähler muss immer lokal sein, gerade weil eine Konvention ist i zu benutzen. Falls du dann jemals eine Funktion inerhalb der Schleife aufrufst, die u.U. ebenfalls eine Schleife mit i erzeugt, hast du ein evtl. grosses Problem den Fehler zu finden.

Lokale Variabeln erleichtern dir die Arbeit, auch wenn es etwas mehr Tipparbeit ist,

genau das wollte ich gerade ansprechen

am Schluss bist du (vor alem wenn das Projekt gross ist) länger mit der Fehlersuche beschäftigt.

Du meinst jetzt bei vielen _globalen_, oder?

Struppi.

scherzkeks (schönen Samstag noch)