Perché il confronto tra stringhe e numeri funziona in Javascript

Sto cercando di confrontare un valore proveniente da un campo di testo HTML con numeri interi. E funziona come previsto. La condizione è –

x >= 1 && x <= 999; 

Dove x è il valore del campo di testo. La condizione restituisce true ogni volta che il valore è compreso tra 1 e 9999 (compreso), altrimenti false . Il problema è che il valore proveniente dal campo di testo è di tipo stringa e lo sto confrontando con i tipi interi. Va bene avere questo confronto come questo o dovrei usare parseInt () per convertire x in intero?