J'essaie d'apprendre JavaScript en parcourant du code dans une application et je vois toujours !variable
dans des conditions if. Par exemple:
if (!variable.onsubmit || (variable.onsubmit() != false)) {
Qu'Est-ce que c'est? Une sorte de test si la variable est vide?
!
est le logique pas opérateur en JavaScript.
!expression
se lit comme suit:
expression
et évaluez-le. Dans votre cas, c'est variable.onsubmit
onsubmit
est probablement une fonction, cela signifie - si la fonction est nulle ou indéfinie - renvoie false, sinon renvoie true. Dans votre cas, !variable.onsubmit
signifie retourne vrai s'il n'y a pas de fonction définie (et donc faux), sinon retourne faux (puisqu'il y a une fonction définie).
En termes simples, !variable
signifie que vous devez prendre la valeur de vérité variable
et l’annuler.
Ainsi, if (!variable) {
entrera la clause if
si variable est false
(ou coercce to false)
if (!variable.onsubmit || (variable.onsubmit() != false)) {
Moyens - vérifie si variable.onsubmit
est défini et vérité (donc vrai), puis vérifie si l'appel de onsubmit
renvoie un résultat coercitif à vrai Dans une ligne courte, il vérifie s'il n'y a pas de onsubmit
ou s'il renvoie true.
C'est un opérateur de négation utilisé pour les tests de vérité sur une variable.
var myVariable = 1;
if ( ! myVariable )
{
// myVariable evaluates as false
}
if ( myVariable )
{
// myVariable evaluates as true
}
La réponse sélectionnée répond déjà à la question. Une chose à ajouter est que l'opérateur !
peut être utilisé d'une manière plutôt intéressante.
obj = {}
if (!!obj) {console.log('works')} // !!obj = true
obj = undefined
if (!!obj) {console.log('does not work')} // !!obj = false
Donc, le double !!
changera n'importe quelle expression en une valeur boolean
sans exception.
Cela a un cas d'utilisation très particulier dans certains cas.
Disons qu'il existe une fonction qui renvoie soit true soit false et rien d'autre. Dans ce cas, on pourrait simplement changer return returnValue
en return !!returnValue
pour plus de prudence (bien que cela ne soit pas nécessaire dans la plupart des cas)
Inversement, si une fonction n'accepte que vrai ou faux et rien d'autre, vous pouvez simplement appeler la fonction functionA(!!parameter)
au lieu de functionA(parameter)
, ce qui n'est pas nécessaire dans la plupart des cas, mais peut assurer une sécurité supplémentaire