Comprendre JavaScript et des typesComprendre JavaScript et des types
Problème Vous souhaitez travailler autour du fait que JavaScript ne sont pas des types déclarées pour ses variables. Théorie du code JavaScript n'a pas de variables avec un type déclaré. Le manque de variables typées est évident lorsque vous déclarez fonctions. Cela dit, ne pas avoir tapé les déclarations de variables ne signifie pas JavaScript n'a pas de types ou pas de sécurité de type. Commençons avec la simple déclaration d'une fonction, comme l'illustre l'exemple suivant. Source: / website / ROOT / ajaxrecipes / javascript / AddTwoNumbers fonction expectations.html (num1, num2) (return num1 + num2;) Le AddTwoNumbers fonction a deux paramètres, num1 et num2, et représente deux numéros individuels. Dans la mise en œuvre de AddTwoNumbers, les deux nombres sont additionnés et la valeur est retournée. Cette façon de déclarer et d'utiliser une fonction est courante dans les autres langages de programmation. Le résultat de l'addition du nombre num1 et num2 est renvoyé à l'appelant comme suit: assertEquals (4, AddTwoNumbers (2, 2)); La fonction assertEquals est utilisé pour vérifier que, lorsque le AddTwoNumbers fonction est appelée avec 2 et 2, 4 est générée par la suite. Lorsque vous exécutez le code, tout fonctionne comme prévu, mais pouvez-vous avoir l'assurance que tout est correct? La réponse est non, vous ne sentez plus assurée, parce que certaines hypothèses trompeuses sont en cours. La fonction AddTwoNumbers déclare deux chiffres, mais l'hypothèse que num1 et num2 sont des nombres n'est pas raisonnable. En JavaScript, les variables ne sont pas le type déclaré. Une fois attribué à un type, une variable est de type sécurisé, mais vous ne savez pas ce que le type est tant que la variable est affectée. Par conséquent, à l'égard de la fonction, les types num1 et num2 sont pas connus. Solution Un moyen plus sûr à mettre en œuvre AddTwoNumbers est la suivante. Source: / website / ROOT / ajaxrecipes / javascript / AddTwoNumbersDisplayTypes fonction expectations.html (num1, num2) (var val1 = parseInt (num1); var val2 = parseInt (n2); if (isNaN (val1) | | isNaN (val2)) ( throw new Error ( "num1, (et / ou) num2 ne sont ni un nombre ou une chaîne");) info ( "AddTwoNumbersDisplayTypes", typeof (num1)); info ( "AddTwoNumbersDisplayTypes", typeof (num2)) return val1 + val2;) Dans la mise en œuvre de modification, la méthode parseInt, qui est utilisé pour convertir une chaîne en nombre, est appliqué aux deux num1 et num2. Le résultat de parseInt est une valeur entière qui permet num1 et num2 d'être additionnés. Les paramètres de la num1 et num2 sont vérifiés pour être des nombres en utilisant l'opérateur isNaN. La valeur de retour de isNaN est une valeur vraie ou fausse. Si l'un des retours les valeurs de la faux, puis num1 ou num2 n'est pas un numéro et une exception est levée. Dans cette mise en œuvre de modification, il semblerait que très peu peuvent tourner mal. Au vu de la mise en œuvre de l'ajout de deux numéros, vous mai se demander comment utiliser un langage dynamique comme le JavaScript est un avantage par rapport en utilisant un autre langage de programmation. Le code additionnel servant à vérifier si oui ou non les bons types sont utilisés serait fastidieux si cette sorte de logique a été appliquée pour toutes les fonctions. Autres langages de programmation tels que Java et C #, addition de deux nombres ensemble en toute sécurité est tout à fait triviale. Accordée, si vous allez effectuer un grand nombre de calculs numériques, puis JavaScript n'est probablement pas le langage de programmation le plus approprié. Mais lorsque vous avez besoin d'écrire une application pour obtenir quelque chose soit fait, et vous ne voulez pas perdre son temps avec le plus faible niveau de détails qui fait ce type, JavaScript est le meilleur choix. Le code source modifié est un exemple de l'écriture défensive code, qui est une bonne pratique, mais ne prenez pas trop loin et laissez-vous faire paranoïaque. Vous voulez que le code qui fait ce qu'elle est censée faire, et quand il ne fait pas, il devrait générer des erreurs explicites en d'autres termes, vous voulez que le code qui crie quand une erreur survient. Le code qui capte le cri devrait alors faire quelque chose avec. Lorsque l'écriture de fonctions, l'objectif est d'écrire une implémentation qui a du code défensive appropriée aux attentes de la fonction. Lorsque vous écrivez du code dans un langage dynamique tel que JavaScript, les attentes et les conventions jouent un rôle extrêmement important. Lors de l'écriture de code en utilisant un langage de programmation C # ou Java, les programmeurs devraient se rendre compte de chaque situation qui fonctionne et ne fonctionne pas. Voyons donc réécrire notre fonction d'addition pour mettre en œuvre nos attentes et à l'utilisation d'une convention. La première étape consiste à écrire des essais et de réfléchir à ce qui est et n'est pas approprié. La mise en œuvre suivant reflète nos attentes. Source: / website / ROOT / ajaxrecipes / javascript / classical_add_display_types expectations.html: function () (assertEquals (4, AddTwoNumbersDisplayTypes (2, 2)); assertEquals (4, AddTwoNumbersDisplayTypes ( "2", 2)); try (AddTwoNumbersDisplayTypes (new Object (), 2); testManager.failed (); return;) catch (e) (info ( "classical_add_display_types", "erreur attendue (" + e.toString () + ")");) testManager.success (); ), Les deux premiers appels assertEquals méthode exprimer l'espoir que nous pourrions ajouter un nombre qui est soit une chaîne ou une valeur numérique. L'attente de l'ajout de deux valeurs numériques est évident car habituellement vous ajoutez deux nombres ensemble. L'attente d'être capable de reconnaître deux tampons que les numéros se justifie parce que nous avons affaire à des formulaires HTML. Éléments de formulaire HTML stocker leurs valeurs en tant que tampons. Ainsi, lorsque l'exécution d'opérations mathématiques utilisant des données provenant des éléments de formulaire HTML, nous prévoyons que les formules de gérer la conversion depuis les tampons vers des valeurs numériques. Après les appels de méthodes qui mettent en œuvre les tests de nos attentes, le code dans le bloc exception implémente quelque chose que nous ne s'attendrait pas à travailler. Appeler l'addition avec un objet, d'où une propriété de l'objet peut référencer un certain nombre, n'est pas quelque chose que nous attendons la fonction d'addition à comprendre. Ici, nous nous attendons à une erreur doit être généré. Le code qui n'est pas prévu de travailler, ou au moins on peut s'attendre à l'échec, est enveloppé dans un bloc d'exception. Le rôle de l'attente est nécessaire à la fois la fonction et l'appelant de la fonction, comme illustré dans l'exemple. En JavaScript, les fonctions doivent répondre à certaines attentes, donc vous devez observer les points suivants lors de leur écriture: • Les variables ne sont pas déclarées à l'aide des types, et lorsque les variables ne sont pas attribués, ils sont considérés comme sans type. • Une fois attribué, les variables de regarder, sentir et se comporter comme des types. • Lors de l'implémentation des fonctions, vous écrivez des blocs de code qui mettent en œuvre les attentes. • Pour répondre correctement aux attentes, vous avez besoin d'écrire des tests. • Lorsque les attentes ne sont pas remplies, les erreurs doivent être évidents et leurs messages d'accompagnement devraient être explicatif. • Si vous voulez vérifier ce type d'une variable, utilisez typeof. N'utilisez pas un simple objet ou par chèque. • Lors de la mise en œuvre des attentes, ne soyez pas paranoïaque et tenter de créer un système de type en vérifiant les détails exacts de chaque variable et chaque paramètre. un article présenté par Sonja Lande Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Comprendre le JavaScript et Types" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 317 users browsing the articles directory |
|
|