2013-02-06 7 views
8

textinputs keyup/keydownイベントが発生すると、私はvalue = String(event.target.value || "")になりました。event.target.valueはいつ文字列ではありませんか?

しかし、event.target.valueが文字列ではないとわかりません。これは可能ですか?他の何かがいつevent.target.valueとして渡されますか?

+0

これは未定義または文字列のいずれかであり、未定義はORを呼び出すfalseと評価されるため、文字列変換は必要ではありませんが、おそらく何らかの保険として追加されます。 – adeneo

答えて

10

event.target要素が入力型要素でない場合は、valueプロパティはありません。たとえば、divをクリックした場合、event.targetvalueを持たないdivです。それは常に(常に文字列またはundefinedである)のいずれかの値または値がundefinedである場合には空の文字列になるようString()event.target.value || ''ラッピング

は不要です。

デモンストレーションについては、this fiddleを参照してください。

0

この文章では何が起きているのか分かりやすく説明しています。 重要な部分は、event.target.value || ""が最初に評価されてからString()が評価されることです。

意味、event.target.valueがヌルか未定義かどうかを確認しています。 nullまたは未定義の場合は、空白の文字列""をデフォルト値として使用します。このステートメントの結果は、String()に渡されます。

関連する問題