Nas operações lógicas js, 0, "", nulo, falso, indefinido e NaN serão todos julgados como falsos e todo o resto será julgado como verdadeiro.
||Calcule primeiro o primeiro operando. Se puder ser convertido em verdadeiro, retorne o valor da expressão à esquerda. Mesmo que o operando do operador || não seja um valor booleano, ele ainda pode ser considerado uma operação booleana OR, porque não importa o tipo do valor que ele retorna, ele pode ser convertido em um valor booleano.
Aproveite seu recurso de retornar valores não booleanos: use || para operandos não booleanos para selecionar o primeiro valor definido e não nulo em um conjunto de valores alternativos (o primeiro é um valor não falso)
exemplo:
var max = max_width || obj.max_width ||
var attr = attr ""; Esta operação é frequentemente usada para determinar se uma variável foi definida. Se não estiver definida, forneça um valor inicial. É mais útil ao definir um valor padrão para um parâmetro de função.
&&, avalia primeiro a primeira expressão e, se for falsa, a segunda expressão não será processada, caso contrário, as expressões subsequentes continuarão a ser processadas; Seleciona o valor da primeira expressão não verdadeira da esquerda para a direita e retorna o valor da última expressão se não for encontrada.
Exemplo: (o sabor precisa ser cuidadosamente considerado)
2 && 's1' && '123' && 'sss' O valor da expressão é igual a 'sss'
2 && 's1' && '' && 'sss' O valor da expressão é igual a ''
2 && 's1' && NaN && 'sss' O valor da expressão é igual a NaN
se(a >=5){
alerta("Olá");
}
Pode ser simplificado para:
a >= 5 && alerta("Olá");
A diferença entre typeof 5 e typeof !!5 é uma forma mais rigorosa de escrever. A função de !! Por exemplo, if(!!attr) => if(attr)
Os recursos de || e && em js não apenas nos ajudam a simplificar o código, mas também a reduzir a legibilidade do código. Isso exige que nós mesmos pesemos.
Implementação inteligente da função startWith em JS, alert(!'asdf'.indexOf('s')) => !0 = true