Eddie: Seltsames +-Zeichen in altem JS-Code

Hallo allerseits,

in altem Code von mir bin ich mehrfach über Folgendes gestolpert, und frage mich, was das wohl soll? Erinnern kann ich mich beim besten Willen nicht :-/

var width = 10;  
myJqueryObject.width(+width - 4);

Ich hab gegoogelt und ein JsFiddle angelegt, hat nix geholfen. Irgendwas werde ich mir wohl dabei gedacht haben, immerhin kommt dieses seltsame Plus-Zeichen auch in jQuery selbst vor...

Danke für eure Hilfe,
Eddie

  1. Hi,

    var width = 10;

    myJqueryObject.width(+width - 4);

    
    >   
    > Ich hab gegoogelt und ein JsFiddle angelegt, hat nix geholfen. Irgendwas werde ich mir wohl dabei gedacht haben, immerhin kommt dieses seltsame Plus-Zeichen auch in jQuery selbst vor...  
      
    Wird vermutlich simpel dazu dienen, eine automatische Typ-Konvertierung herbeizuführen …  
      
    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. Hi,

      var width = 10;

      myJqueryObject.width(+width - 4);

        
      
      > Wird vermutlich simpel dazu dienen, eine automatische Typ-Konvertierung herbeizuführen …  
        
      Ah nee, ergibt in diesem Fall eher weniger Sinn, wenn width = 10 direkt darüber steht.  
      Ist das der Original-Code?  
        
      Könnte auch sein, dass an der Stelle jemand (du?) einfach explizit darauf hinweisen wollte, dass hier das positive ein-fache von widht benutzt wird, wenn an anderer Stelle vielleicht mal das gegenteil -width auftaucht …?  
        
      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. Danke Euch allen! Jetzt macht das Ganze natürlich tatsächlich Sinn! Ja, mein Beispiel war vereinfacht, es sind tatsächlich Strings, die ich da in eine Nummer umwandle. Oje, hätte ich auch selbst drauf kommen können...

        Das sind aber so die Beispiele, wo auch Google nichts hilft (weil Suche nach "javascript (+" rein garnichts bringt. Und im http://de.selfhtml.org/navigation/syntax.htm#javascript@title=Selfhtml-Syntaxverzeichnis kommt das unäre Plus nicht vor :-/

        Danke also nochmal,
        Eddie

        1. Oje, hätte ich auch selbst drauf kommen können...

          Meinst du? Ich hätt das nicht so schnell rausgefunden.
          Da hat sich der Programmierer für ganz schlau gehalten, zusammen mit der Tatsache dass mir hier Typisierung fehlt ist das einer der sehr unschönen Fallen die man jemandem damit stellen kann.

  2. Hallo,

    var width = 10;

    myJqueryObject.width(+width - 4);

    
    >   
    > Irgendwas werde ich mir wohl dabei gedacht haben, immerhin kommt dieses seltsame Plus-Zeichen auch in jQuery selbst vor...  
      
    nun, was \*du\* dir dabei gedacht hast, weiß ich natürlich nicht. ;-)  
      
    Grundsätzlich ist natürlich das Pluszeichen als unärer Operator genauso zulässig wie das Minuszeichen, auch wenn es im Gegensatz zum Minus keinen Effekt hat.  
      
    Keinen Effekt? Najaaa ... zumindest nicht, wenn der Operand ein numerischer Ausdruck ist. Wenn der Operand allerdings ein String ist, wird er automatisch in seinen numerischen Wert umgewandelt, weil das Plus als unärer Operator nur für Zahlenwerte definiert ist. Es könnte sich also um einen verklausulierten Typecast handeln - auch wenn ich meine, dass Number() für diesen Zweck schlauer ist, weil man ihm sofort ansieht, was es soll.  
      
    Einen anderen Sinn für das einsame Pluszeichen kann ich mir aber atm nicht vorstellen.  
      
    Ciao,  
     Martin  
    
    -- 
    Niemand lebt allein von seinen Träumen.  
    Aber wer träumt, lebt noch.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
  3. Hallo,

    Es gibt zwei Plus-Operatoren in JavaScript:

    1. Den unären +-Operator
    2. Den binären +-Operator (Additionsoperator)

    Unär heißt: nimmt nur einen Operanden entgegen
    Binär heißt: nimmt zwei Operanden entgegen

    • 1

    Das ist der unäre +-Operator. Er sorgt dafür, dass der Operand 1 in einen Number-Wert umgewandelt wird. Das macht dasselbe wie

    Number(1)

    Siehe http://es5.github.io/#x15.7.1

    1 + 2

    Das ist Additionsoperator. Er addiert die Operanden 1 und 2. Das Ergebnis dürfte bekannt sein. ;)

    Den unären +-Operator oder Number(…) kann man verwenden, wenn man einen Wert in einen Wert vom Typ Number umwandeln will. Z.B. wenn es sich um einen String handelt.

    var width = 10;

    myJqueryObject.width(+width - 4);

      
    Bei diesem Beispiel ist die Typumwandlung eigentlich nicht nötig, denn width ist bereits vom Typ Number. Selbst wenn es kein Number-Wert wäre, der [Substraktionsoperator](http://es5.github.io/#x11.6.2) wandelt die Operanden automatisch in Number-Werte um.  
      
    Mathias
    
    -- 
    [Chaplin.js - JavaScript application architecture on top of Backbone.js](http://chaplinjs.org/)