||
jest logical or. Zwraca pierwszy prawy operand * (ostatnia wartość oceniona). So "nagłówki"
var myHeader = headers || {'Content-type':'text/plain'};
Zwraca jeśli to truthy (a jeśli jest to wartość null lub undefined, że wartość jest coreced na "false"). Jeśli jest to falsey, zwraca drugi operand. Nie wierzę, że ma to bardzo specyficzną nazwę w javascript, po prostu coś ogólnego jak "domyślna wartość argumentu".
|
to bitwise or. Jest to operacja matematyczna i robi coś zupełnie innego. Ten operator nie ma nawet sensu (i generalnie generuje tylko wynik). Gdziekolwiek to widziałeś, był to z pewnością literówka i zamierzali użyć logicznego lub.
Więc idź tą pierwszą metodą (a = b || c
).
* "Logiczny lub" jest również znany jako "logiczny rozróżnienie" lub "wykluczający tryb łączony". JavaScript, podobnie jak wszystkie języki programowania, ocenia logiczne instrukcje za pomocą short-circuit evaluation. Używając logicznych lub wyrażeń, analizuje każdy operand pod kątem prawdziwości i zatrzymuje się na pierwszym prawdziwym (i zwraca tę wartość). Jeśli nie ma żadnych operandów prawdy, to i tak musiał przejść przez wszystkie z nich, więc zwraca ostatni operand, wciąż ten ostatni, który ocenił. Logiczny i (& &) jest podobnie zwarty przez zatrzymanie pierwszego operandu falsey.
Chcesz '||' .. –
literówki, powinno być '||' – qwertymk
możliwy duplikat [Czy istnieje operator "koalescencyjny" w JavaScript?] (http://stackoverflow.com/questions/476436/is-there-a-null-coalescing-operator-in-javascript) –