Il metodo .text()
restituirà sempre una stringa. Alcuni operatori, come l'operatore +
, sono sovraccarichi per eseguire operazioni aritmetiche e di stringa. Nel caso di stringhe, esegue la concatenazione, quindi il risultato "51".
Se si dispone di una stringa e è necessario utilizzare un operatore non coercing, sarà necessario utilizzare parseInt
(o qualche altro metodo di conversione in un numero).
Tuttavia, l'operatore *
ad esempio implicity esegue questa coercizione, quindi non è necessaria la chiamata parseInt
in tale situazione (vedere ad esempio updated fiddle).
nota che l'incremento ++
operatore non costringere suo operando, ma hai utilizzato l'operatore di postfix in modo che non avrà alcun effetto. Utilizzare l'operatore prefisso e si può vedere di lavoro:
$('#withoutParseIntButIncrement').text(++value);
Quindi, per riassumere:
// Parses string to number and adds 1
$('#withParseInt').text(parseInt(value) + 1);
// Coerces number 1 to string "1" and concatenates
$('#withoutParseInt').text(value + 1);
// Implicity coerces string to number, but after it's been inserted into the DOM
$('#withoutParseIntButIncrement').text(value++);
// Implicity coerces string to number, before it's been inserted into the DOM
$('#withoutParseIntButIncrement').text(++value);
// Implicity coerces to number
$('#withoutParseIntButMultiply').text(value * 2);
Nota a margine: è considerata buona pratica di passare sempre il secondo argomento (la radice) a parseInt
.Ciò garantisce il numero viene analizzato nella base corretta:
parseInt(value, 10); // For base 10
fonte
2013-03-15 10:06:22
Sembra ragionevole. A volte ho avuto alcuni problemi seri quando ho calcolato con il numero estratto da DOM, quindi ho pensato di usare sempre parseInt per gestire il numero. La tua risposta lo conferma. In questo modo sono al sicuro. – iappwebdev
http://stackoverflow.com/questions/11786758/why-parseint08-is-giving-0-whereas-parseint07-is-giving-7?rq=1 Questa domanda spiega anche perché si dovrebbe sempre fornire una base a causa di alcuni strane stranezze del browser sull'analisi degli interi. –