Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
cosa fa il || fare in questo caso?
Aggiunge _4 alla matrice che è Attacklab.wmd_env.buttons?Cosa fa il || operatore?
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
cosa fa il || fare in questo caso?
Aggiunge _4 alla matrice che è Attacklab.wmd_env.buttons?Cosa fa il || operatore?
L'operatore ||
in JavaScript restituisce il valore a sinistra se tale valore non viene valutato su false
, altrimenti restituisce il valore a destra.
Da Mozilla's Core JavaScript 1.5 Reference:
expr1 || expr2
Restituisceexpr1
se può essere convertita in true; in caso contrario, restituisceexpr2
. Pertanto, se utilizzato con valori booleani,||
restituisce true se uno degli operandi è true; se entrambi sono falsi, restituisce false.
Quindi, in questo caso, se Attacklab.wmd_env.buttons
non hanno un valore, si imposta il valore di _4
.
È strano che MDC usi piuttosto ambiguo "Restituisce expr1 se ** può essere convertito ** in vero". Non si tratta di "in grado di essere convertiti", si tratta di quale espressione di valore restituisce. – kangax
Se Attacklab.wmd_env.buttons
è null
o undefined
, esso sarà impostato al valore di default _4
.
E 'un modo elegante di scrivere
if(!Attacklab.wmd_env.buttons)
Attacklab.wmd_env.buttons = _4;
E' bello per la fornitura di valori di default. Tenere presente che non solo null
e undefined
attivano il condizionale, ma anche 0
, false
e ''
, ovvero tutto ciò che è considerato false
in contesti booleani.
Il || l'operatore controlla se il valore fornito sul lato sinistro dell'espressione è falso (in un contesto booleano). In tal caso restituisce un valore alternativo indicato dal lato destro dell'espressione. Altrimenti restituisce il valore originale.
Così, per esempio il seguente codice fisserebbe 'Foo' ad un valore predefinito se è nullo:
Foo = Foo || "Default Value"
Questo è talvolta chiamato l'operatore coalescenza. È supportato in altre lingue come Ruby e Perl. C# ha il ?? operatore che fa la stessa cosa
Quindi, con questa risposta sa come si chiama, e quali altre langaghe lo usano, e anche la diversa sintassi in C# ... e ancora non sa cosa fa. – Beska
Buon punto, probabilmente avrei dovuto lasciare un commento. Ad ogni modo, la mia risposta è stata aggiornata. –
+1 per il nome corretto! Nessun'altra domanda/risposta SO sembrava voler dare quello ... Aiutami a trovare l'equivalente in Xquery (è $ $ foo: = ($ foo, "valore predefinito") [1] per chiunque sia curioso). –
Si prega di correggere il titolo. – rkb
Wow ci sono voluti 7 tentativi per ottenere il titolo giusto ... – Pool