2013-12-18 21 views
14

Ich bin neu in der Javascript-Welt und ich habe keine Informationen über diese Notation gefunden. Ich fand es in diesem Thema (siehe die Antwort): Convert HH:MM:SS string to seconds only in javascript.Was bedeutet (+ var)

Auch ich wollte diesen Code verwenden, um 'HH: MM: SS' Zeichenfolge in Sekunden zu konvertieren. Aber es scheint mir unsicher zu sein. Wenn der Benutzer 'XX: 03: SS' eingibt, wird der Wert NaN sein, was (zumindest für mich) nicht korrekt ist. Also beschloss ich, verbessert es mit:

function convertHHMMSSToSeconds(time) { 

// initialize seconds 
var seconds = 0; 

//ensure time 
if (!time) { 
    return seconds; 
} 


try { 
    var hmsTab = time.split(':'); // split it at the colons 

    // ensure that the hmsTab contains 3 values (hh,mm,ss) 
    if (!hmsTab || hmsTab.length !== 3) { 
     return seconds; 
    } 

    // initialize hh, mm and ss 
    var hh = hmsTab[0] > 0 && hmsTab[0] < 60? +hmsTab[0] : 0; 
    var mm = hmsTab[1] > 0 && hmsTab[1] < 60 ? +hmsTab[1] : 0; 
    var ss = hmsTab[2] > 0 && hmsTab[2] < 60 ? +hmsTab[2] : 0; 

    // return 0 if one variable is not valid 
    if(+hmsTab[0] !== hh ||+hmsTab[1] !== mm || +hmsTab[2] !== ss) { 
     return seconds; 
    } 

    // minutes are worth 60 seconds. Hours are worth 60 minutes. 
    seconds = (hh * 60 * 60) + (mm * 60) + ss; 
}catch (error) 
{ 
    seconds = 0; 
} 
return seconds && seconds>0 ? seconds : 0; 

}

Also meine Frage bleibt, was bedeutet (+ var) bedeuten.

Regards,

+0

Seine kürzeste Form, um zu Nummer – Satpal

Antwort

29

Die + Zeichen vor einer Variablen, wird diese Variable auf eine Reihe gegossen. Beispiel:

var x = "3"; 
var y = x + 10; // 310 
var z = +x + 10 // 13 
+1

konvertieren Ich habe nicht erwartet, eine Antwort so schnell. Vielen Dank. – BironDavid

+4

Aber anders als parseInt (..) wird es keine Werte konvertieren, die keine wahren Zahlen sind, z. '10px' –

+0

@YuriyGalanter Die Präzision wird geschätzt. Sie haben Recht, es ist nicht dasselbe wie "parseInt()". – BironDavid

5

seine kürzeste Form umzuwandeln ein variable

6

Einen Weg convertion Anzahl zu nummerieren:

+n === Number(n) 
11

+var ist die Anwendung der unären identity operator auf den Wert der var. Der Identitätsoperator kann als ähnlich wie eine Funktion, die einzigen Parameter liefert gedacht werden:

function identity(operand) { 
    return operand; 
} 

jedoch die Identität des Bedieners wirkt nur auf numerische Werte. Da es sich bei Javascript um eine schwach typisierte Sprache handelt, führt die Anwendung einer numerischen Funktion auf einen nicht numerischen Wert dazu, dass der nicht numerische Wert in einen äquivalenten numerischen Wert umgewandelt wird. Im häufigsten Fall wird zum Verzwingen mit dem Identity-Operator eine Zeichenfolge, die eine Zahl enthält, in eine Zahl zerlegt.

Während die Eingabe schnell und leicht zu merken ist, ist die Nötigung mit dem Identity-Operator nicht sehr robust. Hier sind einige Beispiele für Ausgänge:

+'150' // 150 
+'150z' // NaN 
+'z150' // NaN 
+'015' // 15 -- note that it doesn't interpret as octal* 
+'015z' // NaN 
+'z015' // NaN 
+'0xf' // 15 -- note that it interprets as hexadecimal 
+'0xfz' // NaN 
+'z0xf' // NaN 
+'NaN' // NaN 
+'undefined' // NaN 

Vergleichen Sie die gleichen Eingaben mit parseInt:

parseInt('150') // 150 
parseInt('150z') // 150 
parseInt('z150') // NaN 
parseInt('015') // 15 -- note that it still doesn't interpret as octal* 
parseInt('015z') // 15 
parseInt('z015') // NaN 
parseInt('0xf') // 15 -- note that it still interprets as hexadecimal 
parseInt('0xfz') // 15 
parseInt('z0xf') // NaN 
parseInt('NaN') // NaN 
parseInt('undefined') // NaN 

parseInt auch gibt Ihnen mehr Kontrolle über das Ergebnis:

parseInt('015', 8) // 13 
parseInt('z0xf', 36) // 1634163 
parseInt('1010', 2) // 10 

* In ECMAScript 5. Zurück Versionen werden standardmäßig auf Oktal eingestellt, wenn es sich um führende Nullen handelt.

Strings sind nicht die einzigen Dinge, die mit dem Identity-Operator in Zahlen umgewandelt werden können, obwohl sie am häufigsten vorkommen, und die Konvertierung ist am sinnvollsten. Andere Zwänge könnten Sinn ergeben oder nicht. Beispiel:

+0

+1 für die Erwähnung, dass dies der unäre Identitätsoperator und die Beispiele sind. – Kaya