En las operaciones lógicas de js, 0, "", nulo, falso, indefinido y NaN se considerarán falsos y todo lo demás se considerará verdadero.
||Calcule primero el primer operando. Si se puede convertir a verdadero, devuelva el valor de la expresión de la izquierda. De lo contrario, calcule el segundo operando. Incluso si el operando del operador || no es un valor booleano, aún puede considerarse como una operación booleana OR, porque no importa de qué tipo sea el valor que devuelve, se puede convertir en un valor booleano.
Aproveche su característica de devolver valores no booleanos: use || para operandos no booleanos para seleccionar el primer valor definido y no nulo en un conjunto de valores alternativos (el primero es un valor no falso)
ejemplo:
var máx = ancho_máximo || obj.ancho_máximo ||
var attr = attr || "" Esta operación se usa a menudo para determinar si una variable se ha definido. Si no está definida, darle un valor inicial. Es más útil al definir un valor predeterminado para un parámetro de función.
&&, evalúa primero la primera expresión y, si es falsa, la segunda expresión no se procesará; de lo contrario, se continuarán procesando las expresiones posteriores; Selecciona el valor de la primera expresión no verdadera de izquierda a derecha y devuelve el valor de la última expresión si no se encuentra.
Ejemplo: (el sabor debe considerarse cuidadosamente)
2 && 's1' && '123' && 'sss' El valor de la expresión es igual a 'sss'
2 && 's1' && '' && 'sss' El valor de la expresión es igual a ''
2 && 's1' && NaN && 'sss' El valor de la expresión es igual a NaN
si(a >=5){
alerta("Hola");
}
Se puede simplificar a:
a >= 5 && alerta("Hola");
La diferencia entre typeof 5 y typeof !!5 es una forma de escritura más rigurosa. La función de !! es convertir una variable de otros tipos al tipo bool. Por ejemplo, si(!!attr) => si(attr)
Las características de || y && en js no solo nos ayudan a simplificar el código, sino que también reducen la legibilidad del código. Esto requiere que lo pesemos nosotros mismos.
Implementación inteligente de la función startWith en JS, alert(!'asdf'.indexOf('s')) => !0 = true