Capisco.
Per meglio chiarire:
in quel caso, come penso tu abbia constatato, non si tratta di una normale assegnazione ad una variabile ma piuttosto è una tecnica usata per assegnare un valore di default a tale variabile qualora questa (in linea di massima) risulti undefined. Per cui, nella valutazione dell'espressione, se il primo operatore restituisce un valore equivalente a false (undefined lo è), allora viene valutato il successivo operatore che, in questo caso, restituisce una stringa non vuota (ed equivale quindi a true), per cui sarà preso in considerazione..
Infatti, dando uno sguardo alla guida in questione, quello script sta dentro una funzione e la variabile è definita come argomento della funzione stessa:
Da tenere presente che in JavaScript, sulla chiamata di una funzione, non è obbligatorio passarne tutti i valori per gli argomenti specificati, per tale motivo è possibile avere (da destra a sinistra) degli argomenti con valore undefined. In questo caso viene quindi usata quella tecnica (con l'operatore ||) per assegnare un valore di default (nel caso specifico, uno spazio " ").String.prototype.padLeft = function(width, char) {
var result = this;
if (this.length < width) {
result = new Array(width - this.length + 1).join(char) + this;
}
return result;
};
Un'alternativa può essere la specificazione di un valore di default direttamente sulla definizione degli argomenti della funzione.
Questo metodo (utilizzato anche in diversi altri linguaggi) evita l'uso di ulteriori tecniche, come quella in questione.codice:String.prototype.padLeft = function(width, char = " ") {
Tuttavia questa sintassi è valida secondo le attuali specifiche ECMAScript 6, per cui è possibile che non sia supportata da alcuni browser (specialmente se non troppo recenti), e in tal caso genererebbe degli errori nell'esecuzione dello script. Per questo, in genere, è comunque preferibile utilizzare tecniche come quella in oggetto.
In conclusione, è possibile che nella guida in questione non sia stato approfondito tale argomento perché magari non è importante rispetto a ciò che la guida stessa propone. Chiaramente è giusto una mia ipotesi. Ripeto, non ho letto quella guida. Il tuo disappunto potrebbe comunque essere accettabile.