2017-07-12 25 views
9

Tôi đã cố gắng hai câu sau đây:Vòng ngoặc "()" tạo sự khác biệt

  1. tuyên bố làm việc tốt và kết quả trả về của nó

    console.log((window.custom || (window.custom = "New window"))); 
     
    
     
    

  2. tuyên bố vừa bị xóa() và lỗi được hiển thị sau đây của nó

    Uncaught Reference Error: Invalid left-hand side in assignment

    console.log((window.custom || window.custom = "New window" )); 
     
    
     
    

whats sai với tuyên bố thứ 2?

Trả lời

19

|| có độ ưu tiên cao hơn =, vì vậy điều thứ hai là phân tích cú pháp như sau:

console.log((window.custom || window.custom) = "New Window"); 

Bạn không thể gán cho là kết quả của một biểu thức ||.

ưu tiên Đây là lý do tại sao bạn có thể viết những thứ như:

somevar = window.custom || "Default value"; 
+2

Vì vậy,() có độ ưu tiên cao hơn || , đó là lý do cho tuyên bố 1 làm việc? –

+5

Dấu ngoặc đơn có mức ưu tiên cao nhất, vì chúng được sử dụng để buộc bất kỳ nhóm cụ thể nào bạn muốn. – Barmar

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