2012-02-10 20 views
12

Tôi đang cố gắng sử dụng tính năng này và dường như không hoạt động. Tôi đoán nó không phải là một lựa chọn, nhưng muốn xác nhận. Điều này có hợp lệ không?Tôi có thể bỏ qua người khác trong câu lệnh javascript nội tuyến không?

(if_it_is) ? thats_cool(); 
+0

Không, nó không bắt buộc. Sử dụng toán tử nhị phân thay thế (&&) miễn là 'thats_cool()' trả về một giá trị đánh giá là 'true'. –

+0

Không. Nó cần phải có ':' và một số giá trị theo sau nó. Nếu bạn muốn, bạn chỉ có thể tạo một hàm có tên 'do_nothing()' mà ... tốt, không làm gì cả. – Edwin

+1

user1048967, Điều đó được gọi là 'if() {}'. – Dykam

Trả lời

23

Bạn có thể sử dụng && có:

if_it_is && thats_cool(); 

Đó là về cơ bản tương đương với:

if (your_expression){ 
    thats_cool(); 
} 
+0

Rất đẹp. Bạn có thể làm rỗng kết hợp với hoặc của. var variable2 = variable1 || 'coalesceVal'; – Jason

+0

điều này là thông minh nhưng nó không có vẻ rất trực quan với tôi. Nó không đọc tốt. Một dấu hỏi, tôi nhận được. Điều đó, không. – evan

+0

@ user1048967: Mọi người đến từ các ngôn ngữ khác tìm thấy nó khó, nhưng điều này thực sự là vẻ đẹp và terseness của javascript bạn cần phải tìm hiểu. Lúc đầu có vẻ kỳ lạ với tất cả mọi người như tôi bản thân mình đã nhầm lẫn nhưng bây giờ sử dụng nó một cách hiệu quả. – Sarfraz

1

Bạn không thể thực hiện điều đó bằng cách sử dụng toán tử tam phân, nhưng bạn có thể sử dụng bản chất ngắn mạch của && để làm những gì bạn muốn.

(if_it_is) && thats_cool(); 
0

Không, bạn không thể. ?: là một toán tử bậc ba và phải có cả ba toán hạng của nó.

1

Không, bạn không thể. Đây không phải là "tuyên bố nếu nội tuyến", đó là toán tử số ternary, và đó là, cũng ... ternary.

(if_it_is) ? thats_cool() : null; 

Vì bạn dường như không quan tâm đến các giá trị trở lại của hoạt động, bạn chỉ có thể viết:

if (if_it_is) thats_cool(); 

mặc dù. Đó cũng sẽ là phong cách tốt hơn so với sử dụng một ternary.

0

Bạn bỏ lỡ thành phần thứ ba. Nên một cái gì đó như thế:

(if_it_is) ? thats_cool() : not_too_cool(); 

Toàn bộ ý nghĩa là:

condition ? do_something_if_condition_is_true : do_something_if_condition_is_false; 
4

Không, nó không phải là hợp lệ.

Toán tử điều kiện có dạng x ? y : z. Toán hạng ba không giống như else trong một if, nó luôn luôn phải ở đó.

1

Điều bạn đang cố gắng sử dụng là Ternary Operator. Bạn đang thiếu một phần khác của nó.

Bạn có thể làm một cái gì đó như:

(if_it_is) ? thats_cool() : function(){}; 

hoặc

(if_it_is) ? thats_cool() : null; 

Hoặc, như những người khác đã gợi ý, bạn có thể tránh ternary nếu bạn không quan tâm đến người khác.

if_it_is && thats_cool(); 

Trong JavaScript, cũng như hầu hết các ngôn ngữ, kiểm tra lôgic này từ trái sang phải. Vì vậy, trước tiên nó sẽ thấy nếu if_it_is là một 'trusy' value (true, 1, một chuỗi khác với '', vân vân). Nếu điều đó không vượt qua thì nó không làm phần còn lại của câu lệnh. Nếu nó vượt qua sau đó nó sẽ thực hiện thats_cool như kiểm tra tiếp theo trong logic.

Hãy coi đó là phần bên trong câu lệnh if. Nếu không có nếu. Vì vậy, đó là một cách viết tắt của

if (if_it_is && thats_cool()) { } 
Các vấn đề liên quan