Phá vỡ trong toán tử ternary javascript

Ngoài ra còn có một bàn tay ngắn nếu khác, được gọi là toán tử bậc ba vì nó bao gồm ba toán hạng. Nó có thể được sử dụng để thay thế nhiều dòng mã bằng một dòng duy nhất. Nó thường được sử dụng để thay thế các câu lệnh if other đơn giản

cú pháp

biến = (điều kiện) ? . biểu thứcSai;

thay vì viết

Thí dụ

thời gian int = 20;
nếu (thời gian <18) {
printf("Chúc một ngày tốt lành. ");
} khác {
printf("Chào buổi tối. ");
}

Tự mình thử »

Bạn chỉ có thể viết

Thí dụ

thời gian int = 20;
(thời gian <18) ? . "). printf("Chào buổi tối. ");

Tự mình thử »

Hoàn toàn tùy thuộc vào bạn nếu bạn muốn sử dụng if truyền thống. câu lệnh khác hoặc toán tử ternary

JavaScript cho phép các toán hạng của các biểu thức bậc ba được phân tách bằng các dòng mới, điều này có thể cải thiện khả năng đọc chương trình của bạn

Ví dụ

var foo = bar > baz ? value1 : value2;

Phần trên có thể được viết lại như sau để cải thiện khả năng đọc và phân định rõ ràng hơn các toán hạng

var foo = bar > baz ?
    value1 :
    value2;

Chi tiết quy tắc

Quy tắc này thực thi hoặc không cho phép các dòng mới giữa các toán hạng của biểu thức bậc ba. Ghi chú. Vị trí của các nhà khai thác không được thực thi bởi quy tắc này. Vui lòng xem quy tắc ngắt dòng của toán tử nếu bạn quan tâm đến việc thực thi vị trí của chính các toán tử

Tùy chọn

Quy tắc này có một tùy chọn chuỗi

  • "always" (mặc định) thực thi các dòng mới giữa các toán hạng của một biểu thức bậc ba
  • "always-multiline" thực thi các dòng mới giữa các toán hạng của biểu thức bậc ba nếu biểu thức kéo dài nhiều dòng
  • "never" không cho phép xuống dòng giữa các toán hạng của biểu thức bậc ba

luôn

Đây là tùy chọn mặc định

Ví dụ về mã không chính xác cho quy tắc này với tùy chọn "always"

Ví dụ về mã chính xác cho quy tắc này với tùy chọn "always"

luôn đa dòng

Ví dụ về mã không chính xác cho quy tắc này với tùy chọn "always-multiline"

Ví dụ về mã chính xác cho quy tắc này với tùy chọn "always-multiline"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

chưa từng

Ví dụ về mã không chính xác cho quy tắc này với tùy chọn "never"

Ví dụ về mã chính xác cho quy tắc này với tùy chọn "never"

Khi nào không sử dụng

Bạn có thể vô hiệu hóa quy tắc này một cách an toàn nếu bạn không có bất kỳ quy ước nghiêm ngặt nào về việc các toán hạng của biểu thức bậc ba có nên được phân tách bằng dòng mới hay không

Hướng dẫn kiểu Chromium và định dạng clang không đồng ý về cách ngắt dòng xung quanh "?. " nhà điều hành và chúng tôi muốn giải quyết mọi thứ. Ý kiến ​​​​của bạn về con đường để đi được tìm kiếm

Hướng dẫn về phong cách của Google không đưa ra nhiều hướng dẫn về việc ngắt dòng xung quanh các toán tử (ngoài việc "nhất quán khi ngắt các biểu thức boolean"). Trong những ngày đầu của Chrome, chúng tôi đã thêm một quy tắc vào hướng dẫn về phong cách của mình để làm rõ điều này. về cơ bản, "ngắt sau toán tử, không phải trước". Do đó, khi ngắt dòng xung quanh "?. ", hầu như tất cả các mã đã làm điều gì đó như

Khi định dạng clang bắt đầu được sử dụng, nó đã giới thiệu một kiểu ngắt mới trước dấu "?. " nhà điều hành, e. g

Dạng này, mặc dù trước đây khá ít được biết đến trong cơ sở mã, nhưng hiện có tới ~30% trường hợp, so với ~70% đối với dạng khác**, do định dạng clang ngày càng phổ biến

clang-format thực sự có một cờ để kiểm soát cách nó phá vỡ xung quanh các toán tử này, nhưng Chromium không chuyển đổi cờ một cách rõ ràng

Tôi đang tìm cách hài hòa hóa hoạt động của chúng ta bằng cách đặt một trong hai kiểu ở trên thành kiểu được khuyến khích chính thức cho Chromium. Dưới đây là những ưu điểm cho mỗi khi tôi nhìn thấy chúng

+ Phù hợp với phần lớn mã hiện có

+ Tuân thủ đề xuất kiểu Chromium rõ ràng (được coi là đủ quan trọng để duy trì ngay cả khi chúng tôi đã xóa hầu hết các ngoại lệ khác khỏi kiểu Google)

+ Phù hợp với hầu hết các toán tử nhị phân, e. g. +, -, &&, v.v. , nơi chúng tôi phá vỡ sau, không phải trước

+ Mang tính chủ quan cao. Có vẻ dễ đọc hơn với tôi, phần nào đó với Nico

+ Trong chừng mực clang-format là đại diện cho "phong cách chính thức của Google", phù hợp hơn với phong cách của Google

+ Hầu như không có nhóm nào trong Google bận tâm đến việc thay đổi hành vi của định dạng clang, cho thấy rằng hầu hết các nhóm nội bộ đều đồng ý hoặc thờ ơ với phong cách này

+ Sẽ khiến chúng tôi xóa quy tắc kiểu "dành riêng cho Chromium" khỏi hướng dẫn của chúng tôi

+ Mang tính chủ quan cao. Có thể tạo dấu "?" . " rõ ràng hơn bằng cách sắp xếp chúng

* Vì hướng dẫn về phong cách của Google không đề cập đến vấn đề này, nên tôi cho rằng quyết định của chúng ta dù thế nào cũng không quan trọng bằng điều gì đó có quy tắc rõ ràng về phong cách của Google

Nói ngắn gọn. Là một hình thức dễ đọc hơn hình thức khác?

Bạn có thể sử dụng break trong toán tử bậc ba không?

Toán tử điều kiện bậc ba là toán tử kết hợp nhiều biểu thức thành một biểu thức lớn hơn. break là một câu lệnh và không phải là một biểu thức, vì vậy không thể sử dụng nó bên trong biểu thức điều kiện bậc ba .

Công dụng của câu lệnh break trong toán tử điều kiện là gì?

Nghỉ là một từ khóa trong C được sử dụng để đưa điều khiển chương trình ra khỏi vòng lặp . Câu lệnh break được sử dụng bên trong vòng lặp hoặc câu lệnh switch.

Làm cách nào để sử dụng tiếp tục trong JavaScript toán tử bậc ba?

Toán tử bậc ba nhận 3 biểu thức ở dạng (expr1) ? . (expr3). continue là một câu lệnh cấu trúc điều khiển, không phải là một biểu thức. Và do đó, nó không thể là toán hạng của toán tử bậc ba .

Bạn có thể trở lại trong một ternary?

Giải thích. Trong toán tử bậc ba, chúng ta không thể sử dụng câu lệnh return .