2015-05-25 17 views
5

Porównywałem dwie gałęzie i było rozbieżności w kodzie, podczas gdy + operator, moim zdaniem nie robi żadnej różnicy od kiedy jest push.
Czy są jakieś różnice?Czy jest jakaś różnica w używaniu operatora "+" do wypychania?

Przed

if (numberPattern.test(val)) { 
      var getNumbers = val.match(numberPattern); 
      for (i = 0; i < getNumbers.length; i++) { 
       valores.push(getNumbers[i]) 
      } 
     } 

Po

if (numberPattern.test(val)) { 
      var getNumbers = val.match(numberPattern); 
      for (i = 0; i < getNumbers.length; i++) { 
       valores.push(+getNumbers[i]) 
      } 
     } 
+0

Jeśli to nie powoduje błędu, nie sądzę, że to jest problem. – SharpEdge

+0

Pytanie brzmi, jaki jest pożytek z tego operatora? Myślałem, że niepotrzebny –

+0

możliwy duplikat [Czym jest jednoargumentowy + używany w JavaScript?] (Http://stackoverflow.com/questions/9081880/what-is-unary-used-for-in-javascript) – Hacketo

Odpowiedz

7

To jest przekształcenie go do Number, gdzie drugi przypadek jest pozostawienie go jako string.

+0

Skąd wiesz, że 'getNumber [i]' zwraca ciąg znaków? –

+1

Należy zauważyć, że ta technika różni się od 'parseFloat' tym, że będzie konwertować wartości logiczne i puste łańcuchy (+ inne przypadki krawędzi), ale nie poleciłbym tego jednak ze względu na czytelność. –

+1

@AmitJoki to z powodu przetwarzania wyrażenia regularnego. –

2

+ zmieni w rzeczywistości getNumbers[i] na typ number. + (operator jednokierunkowy) jest faktycznie używany do konwersji go na number.

spróbuj uruchomić ten kod:

var s = "1"; //String 
var s1 = +s; //String changed to a number now 
console.log(typeof s1); 

Zobaczysz rodzaj s1 będzie number.

Powiązane problemy