2013-02-06 7 views
8

Mi sono imbattuto in value = String(event.target.value || "") quando viene attivato un evento keyup/keydown di textinput.Quando un evento.target.value non è una stringa?

Ma non sono sicuro quando lo event.target.value non è una stringa? È possibile? Quando qualcos'altro è passato come event.target.value?

+0

È indefinito o una stringa e non definito come falso, invocando l'OR, quindi la conversione delle stringhe non deve essere necessariamente necessaria ma è probabilmente aggiunta come una sorta di assicurazione. – adeneo

risposta

10

Se l'elemento event.target non è un elemento del tipo di input, non avrà una proprietà value. Ad esempio, se faccio clic su un div, allora event.target è un div che non ha value.

Avvolgendo event.target.value || '' in String() non è necessario in quanto sarà sempre uno dei due valori (che è sempre una stringa o undefined) o la stringa vuota nel caso che il valore è undefined.

Vedere this fiddle per una dimostrazione.

0

Può aiutare a rompere ciò che sta accadendo qui in quella dichiarazione. La parte chiave è che event.target.value || "" valuta prima, prima di String().

Significa che sta verificando se event.target.value è nullo o indefinito. Se è NULL o indefinito, utilizzerà la stringa vuota "" come valore predefinito. Il risultato di questa dichiarazione viene quindi passato a String().

Problemi correlati