2012-04-13 36 views
11

Tôi đang sử dụng rất nhiều trong số này:làm thế nào để rút ngắn cú pháp jquery if-else statement?

$text = $menu.jqmData('menu-text') ? 
      $menu.jqmData('menu-text') : self.options.menuTxt; 

Nó đã là "viết tắt" cú pháp, nhưng tôi đang tự hỏi, liệu nó có thể làm giảm dòng trên hơn nữa. Phải có cách tốt hơn là kiểm tra $ menu.jqmData ('menu-text') và sau đó viết lại toàn bộ nội dung. Có phải không?

Cảm ơn bạn đã trợ giúp!

Trả lời

21

Cách ngắn hơn là sử dụng ống đôi. Về cơ bản nó sử dụng giá trị thứ hai nếu giá trị đầu tiên là falsy.

$text = $menu.jqmData('menu-text') || self.options.menuTxt; 

Bạn cũng có thể sử dụng nó nhiều lần trong cùng một dòng. Giả sử bạn có một biến số uberMenuTxt được ưu tiên hơn hai loại kia và bạn có thể làm như vậy.

$text = uberMenuTxt || $menu.jqmData('menu-text') || self.options.menuTxt; 

Về cơ bản nó cứ tiếp tục mỗi khi giá trị hiện tại là falsy và sẽ dừng ở giá trị đầu tiên không được.

+0

TUYỆT VỜI! Ton of code saved :-) – frequent

+0

Câu hỏi: cái nào đứng trước cái kia, nếu cả hai trả về một giá trị. Đầu tiên, như trong câu lệnh if bình thường, đúng không? – frequent

+4

@frequent yes, đây là cách || (OR) hoạt động. nếu câu lệnh đầu tiên trả về true, các câu lệnh sau sẽ không được đánh giá nữa. – GNi33

Các vấn đề liên quan