User09: Vereinfachte Schreibweise für JS

Hi!

Hätte da eine Frage...ich würde gerne statt document.write("Hallo") eine variable schreiben in der ich nur document.write( und eine andere in der ich nur "Hallo") schreibe um jene zwei variablen dann wieder zusammen zu führen.

ich dachte da an sowas wie

var a = document.write(
var b = "Hallo")
die beiden Variablen also x+y sollten dann letztendlich wieder zusammengefügt werden um im Ergebnis document.write(“Hallo“) zu erzeugen.

Der Sinn des Ganzen wäre, sich das document.write() bei mehrfachen Wiederholungen zu ersparen durch eine kürzere Variable…

Leider Gottes habe ich keinen Plan wie ich das umsetzten sollt…wenn man bei den Variablen einen String erzeugt bzw ““ um den Text der Variablen wickelt hilft das leider auch nicht weiter…:(

Danke schon mal für eure Hilfe im Voraus ;) und glg

  1. Hi,

    Hätte da eine Frage...ich würde gerne statt document.write("Hallo") eine variable schreiben in der ich nur document.write( und eine andere in der ich nur "Hallo") schreibe um jene zwei variablen dann wieder zusammen zu führen.

    ich dachte da an sowas wie

    var a = document.write(
    var b = "Hallo")
    die beiden Variablen also x+y sollten dann letztendlich wieder zusammengefügt werden um im Ergebnis document.write(“Hallo“) zu erzeugen.

    Das kann nicht funktionieren. Schon allein weil die Anführungszeichen bei “Hallo“ für Javascript nicht verdaubar sind.

    var a = document.write(
    var b = "Hallo")

    Das wird auch nicht klappen, jede der Zeilen erzeugt einen Syntax-Fehler.

    Der Sinn des Ganzen wäre, sich das document.write() bei mehrfachen Wiederholungen zu ersparen durch eine kürzere Variable…

    HÄ?

    Suchst Du vielleicht sowas:

    document.write("Zeile1"
                 + "Zeile2"
                 + "Zeile3");

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Nein sorry...ich möchte nur das document.write() verkürzen zu zB var a...trotzdem DANKE für deine schnelle Antwort!

      Glg User09

  2. Hallo, wie wärs denn mit

      
    var dc = function(str){  
    document.write(str);  
    };  
      
    dc("hallo");  
      
      
    
    

    Grüße Basti

    1. Ja!! Das kommt hin...DANKE!!!

      1. Om nah hoo pez nyeetz, User09!

        Ja!! Das kommt hin...DANKE!!!

        Das ist zwar möglich, aber du solltest so nicht arbeiten.

        Durch das bloße Duplizieren von Methoden oder was auch immer, benötigst du zusätzlichen Speicherplatz. Das wird sich in der Performance negativ bemerkbar machen.

        Wenn es dir um einen kurzen Quelltext geht, brauchst du dir keine Sorgen zu machen, die meisten Server werden die Inhalte komprimiert ausliefern. Damit wird wesentlich mehr erreicht. Zusätzlich könntest du noch Tools, sogenannte Minimizer, verwenden, die dir etwa Leerzeichen aus deinem Code entfernen oder auch Variablen kürzen. Damit erhälst du einen ultrakompakten Code, der nicht mehr ohne weiteres menschenlesbar ist. Die Funktionsweise geheimzuhalten, wird dir dadurch aber nicht gelingen. Siehe auch Security through obscurity.

        Während der Entwicklung, vor allem in einem Team, solltest du auf aussagekräftige Variablen-, Methoden-, Klassenbezeichner, … und Commitkommentare (@CK *g*) achten.  Vor allem letzteres ist nicht immer ganz einfach.

        Scheue dich nicht vor umfangreichen Kommentaren, auch wenn du allein arbeitest. Sie werden dir helfen, deinen eigenen Code wieder zu verstehen, wenn du nach einer längeren Pause wieder weiter arbeiten möchtest. Effektiv sparst du dadurch Arbeitszeit.

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Schwan und Schwanzflosse.
        1. @Matthias A! Du hast ja recht! Es geht aber weniger ums verschlüsseln bzw verschleiern von Code als um das komprimieren von JS. Und dafür ist eine vereinfachte Schreibform durchaus zweckmäßig...Welche Auswirkungen für den Endnutzer entstehen wird sich mit Sicherheit errechnen lassen(hab mir noch keine genaueren Gedanken diesbezüglich gemacht aber das kommt noch...die Frage lautet dann wie wie viel traffic kann ich mir ersparen und um wie viel verlangsamt sich dadurch die Anwendung beim Nutzer und das alles unter der Prämisse dass die Rechenzeit des Anwenders nur um max. 1 Sec. ansteigt...glaub aber dass das im Bereich des Möglichen liegt ;) !)!! glg User09

        2. Meine Herren!

          Durch das bloße Duplizieren von Methoden oder was auch immer, benötigst du zusätzlichen Speicherplatz. Das wird sich in der Performance negativ bemerkbar machen.

          Der Speicherbedarf wird sich nur geringfügig erhöhen weil JavaScript bei Objekten in der Regel keine Kopien erstellt, sondern Referenzen. Bei Primitiven wird tatsächlich kopiert, aber das dürfte in den meisten Fällen auch nicht so schwer ins Gewicht fallen. Auf der anderen Handd kann so ein Shortcut Property-Look-Ups sparen, was sogar zu einer Verbesserung der Rechenzeit beitragen kann. Aus dieser Überlegung ist zum Beispiel diese optimierte for-Schleifen Variante hervorgegangen:

          for ( var i = 0; i < array.length; i++ )
          Hier muss bei jedem Durchlauf die length-Eigenschaft von array neu gelesen werden.
          for ( var i = 0, l = array.length; i < l; i ++ )
          Hier wird zu Anfang genau ein mal die length-Eigenschaft gelesen und in der Variablen l gecacht.

          JSPerf

          Während der Entwicklung, vor allem in einem Team, solltest du auf aussagekräftige Variablen-, Methoden-, Klassenbezeichner […] achten.

          Da stimme ich uneingeschränkt zu!

          … und Commitkommentare (@CK *g*) achten.  Vor allem letzteres ist nicht immer ganz einfach.

          „Typo“?

          --
          “All right, then, I'll go to hell.” – Huck Finn
    2. Hi,

      Hallo, wie wärs denn mit

      var dc = function(str){
      document.write(str);
      };

      dc("hallo");

        
      Wozu eine Funktion drumherum basteln?  
        
      ~~~javascript
      var w = document.write;  
      w("I know I should probably not be using document.write in the first place.");
      

      MfG ChrisB

      --
      Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
      1. @@ChrisB:

        nuqneH

        var w = document.write;

        w("I know I should probably not be using document.write in the first place.");

          
        Wobei der entscheidende Teil der Antwirt „I know I should probably not be using document.write in the first place“ ist  
          
        document.write hat mit moderner Webentwicklung nichts zu tun. Spätestens wenn man versucht, damit Inhalte dynamisch auf eine bereits geladene Seite zu bringen, versteht man, warum nicht.  
          
        Qapla'
        
        -- 
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        
      2. var dc = function(str){

        document.write(str);
        };

        dc("hallo");

        
        >   
        > Wozu eine Funktion drumherum basteln?  
        >   
        > ~~~javascript
        
        var w = document.write;  
        
        > w("I know I should probably not be using document.write in the first place.");
        
        

        Schon mal ausprobiert und in die Fehlermeldungen des Browsers geschaut? Wenn du write() aus document "rausnimmst", nimmst du ihm auch seinen Kontext: "TypeError: 'write' called on an object that does not implement interface HTMLDocument."

        So würde das was werden …

        var w = document.write;  
        w.call(document, "I know I should probably not be using document.write in the first place.");
        

        … aber damit sind wir letztlich wieder bei der Ausgangsfrage.

        1. Meine Herren!

          Schon mal ausprobiert und in die Fehlermeldungen des Browsers geschaut? Wenn du write() aus document "rausnimmst", nimmst du ihm auch seinen Kontext: "TypeError: 'write' called on an object that does not implement interface HTMLDocument."

          So würde das was werden …

          var w = document.write;

          w.call(document, "I know I should probably not be using document.write in the first place.");

            
          Mit `call()`{:.language-javascript} und `apply()`{:.language-javascript} kannst du beim Funktionsaufruf den Kontext übergeben, mit `bind()`{:.language-javascript} kann man die Funktion schon vorher an einen Kontext binden.  
            
          `var w = document.write.bind( document );`{:.language-javascript}  
            
          
          -- 
          “All right, then, I'll go to hell.” – Huck Finn
          
          1. 1UnitedPower du bist der beste!!!! DANKE vielmals! Das trifft den Nagel auf den Kopf! Glg User09