J'ai joué avec mes collègues hier. Ils m'ont posé une question de codage, qui concernait typeof. J'ai trouvé que c'était assez amusant. J'aimerais la partager avec vous ici pour consolider mon résumé des points de connaissance de typeof. Si quelque chose ne va pas, veuillez le signaler et nous pourrons progresser ensemble.
Le code est comme ceci :
<!DOCTYPE html> <head> <title>typeof</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> </head> <body> <script> var a= a||null; var b= c||null; var c= typeof f; console.log(a); console.log(b); console.log(c); </script> </body> </html>
Donc, si vous exécutez ce code, qu'imprimera le débogueur Chrome ?
Veuillez voir les rendus
Pourquoi ce résultat se produit-il ?
Analysez d'abord les deux valeurs nulles dans l'image ci-dessus
Parce que Javascript pré-analysera (lèvera) avant d'exécuter le code.
Qu'est-ce que le levage ?
Autrement dit, en JavaScript, vous pouvez déclarer plusieurs instructions var n'importe où dans une fonction. Elles fonctionneront comme si elles étaient déclarées en haut de la fonction et donneront à la variable déclarée par var une valeur initiale non définie. Ce comportement est appelé levage.
Ainsi, avant d'exécuter le code ci-dessus, Javascript pré-analysera (lèvera) toutes les variables var (a, b, c). Lorsque a||null est exécuté, a n'est pas défini, et parce qu'il s'agit d'une opération | , donc le résultat est nul.
c||null est une vérité.
Regardons à nouveau, pourquoi typeof f n'est pas défini ? Si f n'est pas défini, une erreur ne devrait-elle pas être signalée ?
Oui, si nous utilisons une variable non définie, le navigateur signalera une erreur.
Cependant, lors de l'utilisation de typeof pour déterminer une variable non définie, undéfini sera renvoyé.
Quel est le mécanisme utilisé par typeof pour déterminer le type de valeur ? Le résumé est le suivant :
1. Pour les valeurs de type numérique, typeof renverra un nombre Remarque : NaN est également un type numérique car il représente une valeur non numérique spéciale en JavaScript.
2. Pour les valeurs de type chaîne, typeof renverra une chaîne.
3. Pour les valeurs de type booléen, typeof renverra booléen.
4. Pour les objets, les tableaux et null, typeof renverra l'objet
5. Pour les types de fonctions, typeof renvoie la fonction
6. Si l'opérande n'est pas défini (n'existe pas ou n'a pas de valeur), undefined sera renvoyé.