2013-04-05 18 views
14

Điều nào là tốt để sử dụng khi có một số lượng lớn luồng nhánh trong Chương trình Node.JS.chuyển đổi so với cấu trúc kiểm soát nhánh khác nếu có trong Node.JS

switch

switch(n) 
{ 
case 1: 
    execute code block 1 
    break; 
case 2: 
    execute code block 2 
    break; 
default: 
    code to be executed if n is different from case 1 and 2 
} 

HOẶC
if-else

if (condition1) 
    { 
    execute code block 1 
    } 
else if(condition2) 
    { 
    execute code block 2 
    } 
else 
    { 
    code to be executed if n is different from condition1 and condition2 
    } 
+2

'chuyển' có vẻ thích hợp hơn nếu các điều kiện bao gồm kiểm tra' n' cho một giá trị cụ thể. – robertklep

+0

@karaxuna: Điều quan trọng với các ngôn ngữ tức là C++ bạn đã trỏ đến 'Ngôn ngữ được biên dịch' của nó và tôi đã hỏi trong 'Node.JS - ngôn ngữ diễn giải'. Vì vậy, vui lòng xem xét hoàn tác phiếu bầu của bạn .. –

+0

@karaxuna Nếu bạn đọc câu hỏi mà bạn đã chỉ ra. Trả lời nói 'Sử dụng công tắc. Trong trường hợp xấu nhất trình biên dịch sẽ tạo ra cùng một mã như một chuỗi if-else, trình biên dịch 'tức là sẽ tạo ra cùng một mã .. Nhưng Node.JS là ngôn ngữ được giải thích –

Trả lời

16

Đối với chỉ một vài mặt hàng, sự khác biệt là nhỏ. Nếu bạn có nhiều mục, bạn chắc chắn nên sử dụng một công tắc. Nó cho hiệu suất tốt hơn so với if-else.

Nếu chuyển đổi chứa nhiều hơn năm mục, nó được triển khai bằng cách sử dụng bảng tra cứu hoặc danh sách băm. Điều này có nghĩa là tất cả các mục đều có cùng thời gian truy cập, so với danh sách nếu người nào khác mà vật phẩm cuối cùng mất nhiều thời gian hơn để đạt được vì nó phải đánh giá mọi điều kiện trước đó trước ..

+0

Trong khi câu lệnh' switch' có thể nhanh hơn (và ý nghĩa hơn hiển nhiên) Tôi nghĩ khẳng định về điều kiện cuối cùng chậm nhất là sai. Đây là trường hợp điển hình mà dự đoán nhánh sẽ khởi động để tùy chọn phổ biến nhất sẽ nhanh nhất. –

6
switch(n) 
{ 
case 1,3,4: 
    execute code block 1 
    break; 
case 2,5,9,10: 
    execute code block 2 
    break; 
default: 
     code to be executed if n is different from first 2 cases. 
} 

Để ghi lại nếu ... khác nếu ... các bước khác cho trường hợp trên, bạn sẽ phải viết câu lệnh điều kiện 'OR (||)' và lặp lại biến 'n' trong câu lệnh, Trường hợp các trường hợp chuyển đổi có thể là được phân tách bằng dấu phẩy ','. Vì vậy, chuyển đổi là dễ đọc hơn cho một trường hợp như vậy.

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