2012-04-27 26 views
23

thể trùng lặp:
What does “options = options || {}” mean in Javascript?Hai ký tự ống (OR) trong dòng javascript này

Tôi đã thấy điều này trong JS:

item = item || {}; 

Tôi đoán đó là một số biến thể của một toán tử ternary nhưng thực sự là gì?

+6

chúng tôi có nhận được một số snobbs Javascript trong nhà tối nay downvoting hoặc những người ngớ ngẩn chỉ nói chung! ? – benhowdle89

+1

@Martin. và những gì bạn sẽ đề nghị tôi có thể đã tìm kiếm để nhận được câu trả lời này ... – benhowdle89

+0

câu hỏi hay. Tôi đã tìm kiếm trong một thời gian và cuối cùng [đã nhận được] (http://stackoverflow.com/questions/9579262/logical-operator-in-javascript-0-stands-for-boolean-false). Nhưng thành thật mà nói, nó không phải là dễ dàng như tôi nghĩ. Hoàn nguyên tất cả các downvotes của tôi –

Trả lời

28
(expr1 || expr2) 

"Returns expr1 nếu nó có thể được chuyển đổi sang đúng, nếu không, trả về expr2."

source

Vì vậy, khi expr1 là (hoặc đánh giá cho) một trong những 0,"",false,null,undefined,NaN, sau đó expr2 được trả lại, nếu không expr1 được trả về

2

Nó tương đương với:

if(!item){ item = {}; } 
+1

Vì vậy, nếu mục là FALSE thì mục là một đối tượng trống? – benhowdle89

+2

'false' hoặc' undefined' hoặc bất kỳ giá trị falsey nào khác, có –

+2

tại sao điều này lại bị bỏ phiếu? –

7

Nếu mục tồn tại, thiết lập mục các đề mục, hoặc đặt nó vào {}

+4

bạn không xứng đáng được bỏ phiếu xuống. –

+0

@Sheikh yeah, câu trả lời là không sai, nhưng nó khá nghèo tôi nghĩ. Kolink và ajax có câu trả lời hay nhất ở đây. Đặc biệt là Kolink xứng đáng với số tiền tối đa –

+0

@ Tại sao không? . –

11

Nó được gọi là dư thừa, nhưng trong trường hợp này đó là một điều tốt. . Về cơ bản, nếu item không được định nghĩa (hoặc nếu không falsy (false, 0, "" ...), sau đó chúng tôi cung cấp cho nó một giá trị mặc định

ví dụ phổ biến nhất là trong các sự kiện:

evt = evt || window.event; 
+4

bạn không xứng đáng một cuộc bỏ phiếu xuống. –

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