¿Qué significa esto ?: x || x === {}

Hace lo siguiente:

x || x === {} 

no significa !!x , es decir, x se define?

3 Solutions collect form web for “¿Qué significa esto ?: x || x === {}”

Esa comparación no tiene sentido, porque o x es verdad, entonces obtienes el resultado de x , o falsy, obtienes false (un valor de falsy nunca es estrictamente igual a una instancia de object vacío).

Una versión concisa sería

 x || false 

para darme x o false .

x || x === {} x || x === {} significa básicamente x || false x || false

!!x significa "es x verdad", entonces no es exactamente lo mismo – x || x === {} x || x === {} devolverá x si x es verdad. En el mismo caso, !!x volverá true .

|| operador significa "si el lado izquierdo es verdad (no null , no undefined , no 0 etc. – ver Todos los valores de falsey en JavaScript para más detalles) regresar al lado izquierdo, de lo contrario, regresar al lado derecho".

En el lado derecho tiene x === {} que siempre evalúa como false , ya que la comparación estricta significa comparar en reference (es decir, "es x el mismo object que {} , lo que nunca es cierto)

!!x y x || x === {} x || x === {} será lo mismo solo si x === true o x === false

|| devuelve el lado izquierdo si el LHS es un valor verdadero. Entonces, si x es un valor verdadero, devuelve x .

De lo contrario, compara x con un nuevo object, que siempre será false , y lo devuelve.

Entonces, si x es verdadero, obtienes (sin modificar) x contrario, obtienes un boolean explícito false .

Esto es diferente a !!x ya que eso devolvería un valor boolean true si x fuera un valor verdadero.

Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.