2012-01-29 24 views
14

JavaScript có thể viết tắt để nếu người khác thoát khỏi một hàm không? Nếu vậy làm thế nào điều này sẽ làm việc.Viết tắt Javascript nếu người khác và trả lại

ví dụ: Tôi có điều này:

if(boolean){ 
return; 
} 

và tôi muốn viết nó như thế này:

(value)? return; 

Chrome phàn nàn trở lại đó là bất ngờ. Có anyway để viết một cái gì đó như thế này để nó có giá trị?

+2

Nó không phải là viết tắt của if-else.Đó là một cấu trúc hoàn toàn khác, và một cái không thích hợp cho nhiệm vụ này. –

+3

Thật buồn khi điều này không hoạt động: 'someVal && return;'. Bảng điều khiển cho biết 'trả về mã thông báo không mong muốn'. –

Trả lời

24

Không, bạn không thể làm điều đó trừ khi bạn trả về một giá trị. Ví dụ: nếu hàm của bạn phải trả về một giá trị mà bạn có thể đã viết:

return boolean ? 'foo' : 'bar'; 

Nhưng bạn không thể ngừng thực hiện hàm bằng cách trả lại khoảng trống bằng toán tử có điều kiện.

1

Bạn muốn làm một ternary operator

đó là thế này:

(bool) ? ifTrue : ifFalse; 

Xin lưu ý: bạn không thể bỏ qua phần khác của một nhà điều hành ternary.

http://en.wikipedia.org/wiki/Ternary_operation

+0

Tôi không nghĩ rằng bạn hiểu phiên bản "dài" của mã thực sự * đã làm gì ... – Shog9

+2

Không, tôi hiểu rồi. Nhưng nó xuất hiện như thể anh ta đang cố gắng sử dụng một toán tử bậc ba, và cố gắng ép buộc nó hành xử theo cách mà anh ta đã hình dung ra nó với tuyên bố ban đầu "dài" của anh ta. Nếu anh ta chỉ đơn giản muốn sử dụng một câu lệnh if sans-curly niềng răng, anh ta có thể đã nói như vậy. * nhún vai * – Kristian

9

Nếu bạn có ý định trở về từ chức năng vào thời điểm này trong thực hiện của nó bất cho dù các bài kiểm tra đánh giá đúng hay sai, bạn có thể sử dụng,

return (value) ? 1 : 2; 

Nhưng nếu bạn chỉ đơn thuần muốn quay lại sớm khi thử nghiệm đánh giá đúng (ví dụ như kiểm tra độ chính xác để ngăn chặn thực thi khi thông số không hợp lệ), ngắn nhất bạn có thể thực hiện là:

if (boolean) return; 
+2

Chỉ thực tế thứ hai hoạt động giống hệt với ví dụ đầu tiên trong câu hỏi. Nó chắc chắn là ngắn hơn mặc dù - minh họa tốt như thế nào slavishly bao gồm cả niềng răng và newlines có thể dẫn đến một mong muốn để bắn mình vào chân! – Shog9

+0

Chỉnh sửa tốt @ Shog9, tôi luôn thiếu lời. –

0

Điều kiện "toán tử bậc ba" (condition ? expression to evaluate when true : expression to evaluate when false) thường được sử dụng cho phép gán biến điều kiện đơn giản.

nếu bạn cần:

if(x > 0) { 
    a = 10; 
}else{ 
    a = 30; 
} 

bạn có thể viết:

a = (x>0)? 10 : 30; 

Bạn có thể nghĩ về nó như một chức năng đơn giản, trong đó có 3 thông số (p1, p2, p3), nếu p1 đúng là nó trả về p2 và nếu p1 là false thì nó trả về p3.

(p1)? p2 : p3; 

Và cũng giống như một chức năng như vậy, không có cách nào cho nó để gây ra mẹ hàm trả về dựa trên điều kiện. Đó là không phải do đó là viết tắt của if/else.

3
if(boolean) return; 

Một dòng, có thể đọc được, hoàn toàn hợp lệ;

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