webroad.online
  1. 1Web
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Unelte
  8. 8React
  9. 9State management
  10. 10Next.js
  11. 11Formulare
  12. 12Date și backend
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Animații
  16. 16Testare
  17. 17Arhitectură
JavaScript · Lecția 5 din 17

Stringuri, numere și Intl

Metodele de zi cu zi, capcanele float-ului și formatare corectă.

Actualizat

Ce este un string

Un string e o secvență de caractere — text. Se scrie între ghilimele simple, duble sau backtick-uri:

Sintaxă Diferență Când
'text' — implicit (convenția din majoritatea proiectelor)
"text" identic cu ' când textul conține '
`text ${x}` template literal: interpolare + mai multe rânduri când combini text cu variabile

Stringurile sunt imutabile: nicio metodă nu modifică stringul original, toate returnează unul nou.

const s = 'salut'
s.toUpperCase()   // 'SALUT'
s                 // 'salut' — neschimbat

Metodele de zi cu zi, pe categorii

Vrei să... Metodă Exemplu
cureți spațiile trim(), trimStart(), trimEnd() ' a '.trim() → 'a'
schimbi litere toLowerCase(), toUpperCase() comparații fără diferență de majuscule
cauți includes(), startsWith(), endsWith(), indexOf() email.includes('@')
extragi slice(start, end), at(-1) 'hello'.slice(0, 3) → 'hel'
împarți / unești split(sep) / arr.join(sep) 'a,b'.split(',') → ['a', 'b']
înlocuiești replace(), replaceAll() 'a-b-c'.replaceAll('-', ' ')
completezi padStart(), padEnd() '5'.padStart(2, '0') → '05'
repeți repeat(n) 'ab'.repeat(2)

slice vs substring: folosește slice — acceptă și indici negativi (slice(-3) = ultimele 3 caractere).

Pentru tipare complexe (validări, extrageri) există expresiile regulate: /\d+/.test('abc123').

Ce este un number

JS are un singur tip pentru numere: number — virgulă mobilă pe 64 de biți (standardul IEEE 754). Întregi și zecimale sunt același tip.

Consecința celebră:

0.1 + 0.2              // 0.30000000000000004

Nu e un bug JS — așa funcționează virgula mobilă în aproape toate limbajele. Pentru bani, lucrezi în bani întregi (1999 în loc de 19.99) și formatezi doar la afișare.

Valori speciale

Valoare Când apare Cum o verifici
NaN („not a number”) conversie eșuată: Number('abc') Number.isNaN(x) — nu x === NaN (e mereu false)
Infinity 1 / 0 Number.isFinite(x)
Number.MAX_SAFE_INTEGER ~9 milioane de miliarde peste el → bigint

Conversii string ↔ number

Metodă '42' '42px' '' Când
Number(x) 42 NaN 0 conversie strictă — implicit
parseInt(x, 10) 42 42 NaN citești un număr de la începutul unui text
parseFloat(x) 42 42 NaN la fel, cu zecimale
+x 42 NaN 0 prescurtare pentru Number (mai puțin lizibilă)
String(n), `${n}` — — — număr → text

Valorile din input-uri și din FormData sunt mereu string. Le convertești explicit.

Math

Math.round(2.5)   // 3
Math.floor(2.9)   // 2  (în jos)
Math.ceil(2.1)    // 3  (în sus)
Math.max(1, 5, 3) // 5
Math.min(...arr)  // minimul dintr-un array
Math.random()     // [0, 1)
(3.14159).toFixed(2)  // '3.14' — atenție, returnează STRING

Intl — formatare corectă, fără librării

Intl e API-ul nativ pentru formatare după limbă și țară. Nu mai scrie de mână separatori de mii sau nume de luni.

Formatter Pentru Exemplu (ro-RO)
NumberFormat numere, monedă, procente 1.234,50 RON, 45%
DateTimeFormat date și ore 8 octombrie 2026
RelativeTimeFormat timp relativ ieri, peste 3 zile
PluralRules alegerea formei de plural 1 mesaj / 5 mesaje / 20 de mesaje
ListFormat liste HTML, CSS și JS
const money = new Intl.NumberFormat('ro-RO', { style: 'currency', currency: 'RON' })
money.format(1234.5)       // '1.234,50 RON'

new Intl.DateTimeFormat('ro-RO', { dateStyle: 'long' }).format(new Date())
new Intl.RelativeTimeFormat('ro', { numeric: 'auto' }).format(-1, 'day')   // 'ieri'

Creează formatter-ul o dată (în afara funcției / componentei) și refolosește-l — crearea e costisitoare.

Pe scurt

  • Stringurile sunt imutabile; template literals pentru interpolare.
  • Un singur tip number; bani în întregi; Number.isNaN pentru NaN.
  • Input-urile dau stringuri — convertește cu Number().
  • Formatare: Intl, nu concatenare manuală.

Surse oficiale

Exerciții

Ți-a fost utilă pagina?

Un click — fără cont.