Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
những gì hiện các || làm gì trong trường hợp này?
thêm _4 đến các mảng đó là Attacklab.wmd_env.buttons?|| nhà điều hành làm gì?
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
những gì hiện các || làm gì trong trường hợp này?
thêm _4 đến các mảng đó là Attacklab.wmd_env.buttons?|| nhà điều hành làm gì?
Toán tử ||
trong JavaScript trả về giá trị ở bên trái nếu giá trị đó không đánh giá là false
, nếu không giá trị sẽ trả về giá trị ở bên phải.
Từ Mozilla's Core JavaScript 1.5 Reference:
expr1 || expr2
Returnsexpr1
nếu nó có thể được chuyển đổi sang true; nếu không, trả vềexpr2
. Do đó, khi được sử dụng với các giá trị Boolean,||
trả về true nếu toán hạng là đúng; nếu cả hai đều sai, trả về false.
Vì vậy, trong trường hợp này, nếu Attacklab.wmd_env.buttons
không có giá trị, giá trị này sẽ đặt giá trị là _4
.
Đó là lạ mà MDC sử dụng chứ không phải mơ hồ "Returns expr1 nếu nó ** có thể được chuyển đổi ** true". Nó không thực sự về "có thể được chuyển đổi", đó là về biểu thức giá trị trả về. – kangax
Nếu Attacklab.wmd_env.buttons
là null
hoặc undefined
, giá trị này sẽ được đặt thành giá trị mặc định _4
.
Đó là một cách ưa thích của văn bản
if(!Attacklab.wmd_env.buttons)
Attacklab.wmd_env.buttons = _4;
Thật tuyệt cho việc cung cấp các giá trị mặc định. Hãy nhớ rằng không chỉ null
và undefined
sẽ kích hoạt điều kiện, mà còn là 0
, false
và ''
, tức là mọi thứ được coi là false
trong ngữ cảnh boolean.
Các || toán tử kiểm tra xem giá trị được cung cấp ở phía bên trái của biểu thức có sai không (trong ngữ cảnh boolean). Nếu vậy nó trả về một giá trị thay thế được chỉ ra bởi phía bên phải của biểu thức. Nếu không, nó sẽ trả về giá trị ban đầu.
Vì vậy, ví dụ đoạn mã sau sẽ thiết lập 'Foo' đến một giá trị mặc định nếu nó là null:
Foo = Foo || "Default Value"
này đôi khi được gọi là các nhà điều hành coalescing. Nó được hỗ trợ bằng các ngôn ngữ khác như Ruby và Perl. C# có ?? nhà điều hành làm điều tương tự.
Vì vậy, với câu trả lời này anh ta biết nó được gọi là gì, và những ngôn ngữ khác sử dụng nó, và thậm chí cú pháp khác trong C# ... và anh ta vẫn không biết nó làm gì. – Beska
Điểm tốt, có lẽ tôi nên để lại một bình luận. Dù sao, câu trả lời của tôi đã được cập nhật. –
+1 cho tên chính xác! Không khác SO câu hỏi/câu trả lời dường như muốn từ bỏ điều đó ... đã giúp tôi tìm ra tương đương trong XQuery (nó để cho $ foo: = ($ foo "giá trị mặc định") [1] cho bất cứ ai tò mò). –
Hãy sửa tiêu đề. – rkb
Wow phải mất 7 nỗ lực để có được danh hiệu đúng ... – Pool