2013-02-06 10 views
8

Tôi đã truy cập value = String(event.target.value || "") khi sự kiện keyup/keydown keyinputs được kích hoạt.Khi nào một event.target.value không phải là một chuỗi?

Nhưng tôi không chắc chắn khi nào event.target.value không phải là một chuỗi? Điều này có thể không? Khi nào thì một cái gì đó khác được chuyển đi như là một event.target.value?

+0

Nó hoặc là không xác định hoặc một chuỗi, và undefined đánh giá là sai, invocing OR, vì vậy chuyển đổi chuỗi should'nt được cần thiết nhưng có thể được thêm vào như một số loại bảo hiểm. – adeneo

Trả lời

10

Nếu phần tử event.target không phải là yếu tố loại nhập, nó sẽ không có thuộc tính value. Ví dụ: nếu tôi nhấp vào số div thì event.target là số div không có value.

Gói event.target.value || '' trong String() là không cần thiết vì nó sẽ luôn là giá trị (luôn là một chuỗi hoặc undefined) hoặc chuỗi trống trong trường hợp giá trị là undefined.

Xem this fiddle để trình diễn.

0

Nó có thể giúp phá vỡ những gì đang xảy ra ở đây trong tuyên bố đó. Phần quan trọng là event.target.value || "" đánh giá đầu tiên, trước khi String() thực hiện.

Có nghĩa là, nó đang kiểm tra xem nếu event.target.value là không hoặc không xác định. Nếu nó là null hoặc không xác định, nó sẽ sử dụng chuỗi trống "" làm giá trị mặc định. Kết quả của câu lệnh này sau đó được chuyển tới String().