Estoy revisando la demostración de Discover Meteor, y estoy luchando por descubrir cómo exactamente '¡regresar! ID de usuario;' trabaja en esta sección :
Posts.allow({ insert: function(userId, doc) { // only allow posting if you are logged in return !! userId; } });! es la negación lógica o el operador "no". !! es ! dos veces. Es una forma de convertir un valor "verdadero" o "falso" en true o false , respectivamente. Dado un valor booleano, ! negará el valor, es decir, !true produce false y viceversa. Dado algo que no sea un valor booleano, el valor primero se convertirá en un valor booleano y luego se negará. Por ejemplo, !undefined primero convertirá undefined en false y luego lo negará, dando como resultado true . Aplicando un segundo ! operador ( !!undefined ) produce false , por lo que en efecto !!undefined convierte undefined en false .
En JavaScript, los valores false , null , undefined , 0 , -0 , NaN y '' (cadena vacía) son valores "falsos". Todos los demás valores son "verdad". (1):7.1.2 Aquí hay una tabla de verdad de ! y !! aplicado a varios valores:
value │ !value │ !!value ━━━━━━━━━━━┿━━━━━━━━━━┿━━━━━━━━━━━ false │ ✔ true │ false true │ false │ ✔ true null │ ✔ true │ false undefined │ ✔ true │ false 0 │ ✔ true │ false -0 │ ✔ true │ false 1 │ false │ ✔ true -5 │ false │ ✔ true NaN │ ✔ true │ false '' │ ✔ true │ false 'hello' │ false │ ✔ true