Maison interface Web js tutoriel Conseils de conversion de type implicite JavaScript_javascript

Conseils de conversion de type implicite JavaScript_javascript

May 16, 2016 pm 03:10 PM

Les types de données de JavaScript sont très faibles (sinon on ne l'appellerait pas un langage faiblement typé) ! Lors de l'utilisation d'opérateurs arithmétiques, les types de données des deux côtés de l'opérateur peuvent être arbitraires. Par exemple, une chaîne peut être ajoutée à un nombre. La raison pour laquelle des opérations peuvent être effectuées entre différents types de données est que le moteur JavaScript effectuera silencieusement une conversion de type implicite sur ceux-ci avant l'opération. Voici l'ajout de types numériques et de types booléens :

.

Copier le code Le code est le suivant :

3 vrai; // 4

Le résultat est une valeur numérique ! S'il s'agit d'un environnement C ou Java, l'opération ci-dessus provoquera certainement une erreur car les types de données des deux côtés de l'opérateur sont incohérents ! Cependant, en JavaScript, dans quelques cas seulement, un type incorrect provoquera une erreur, par exemple lors de l'appel d'une non-fonction ou de la lecture d'une propriété nulle ou non définie, comme suit :

Copier le code Le code est le suivant :

"bonjour"(1); // erreur : pas une fonction
null.x ; // erreur : impossible de lire la propriété 'x' de null

Dans la plupart des cas, JavaScript ne fera pas d'erreurs, mais effectuera automatiquement la conversion de type correspondante. Par exemple, les opérateurs arithmétiques tels que -, *, / et % convertiront leurs opérandes en nombres, mais le signe " " est un peu différent. Dans certains cas, il s'agit d'un signe arithmétique plus et dans d'autres cas, c'est un signe plus. une concaténation de chaîne Symbole, les détails spécifiques dépendent de ses opérandes, comme suit :

Copier le code Le code est le suivant :

2 3 ; // 5
"bonjour" "monde"; // "bonjour tout le monde"

Mais quel serait le résultat si des chaînes et des nombres étaient ajoutés ? JavaScript convertira automatiquement les nombres en caractères, que le nombre ou la chaîne vienne en premier, comme suit :

Copier le code Le code est le suivant :

"2" 3 ; // "23"
2 "3" ; // "23"

Le résultat de l'ajout d'une chaîne et d'un nombre est une chaîne. Le résultat de l'ajout d'une chaîne et d'un nombre est une chaîne. Dites des choses importantes trois fois ! ! ! ! ! !

De plus, il convient de noter que le sens de fonctionnement de " " est de gauche à droite, comme suit :

Copier le code Le code est le suivant :

1 2 "3" ; // "33"

Cela équivaut à :

Copier le code Le code est le suivant :

(1 2) "3" ; // "33"

En revanche, les résultats suivants sont différents :

Copier le code Le code est le suivant :

1 "2" 3; // "123"

Cependant, la conversion de type implicite cache parfois certaines erreurs, par exemple, null sera converti en 0 et undefined sera converti en NaN. Il est à noter que NaN et NaN ne sont pas égaux (cela est dû à la précision des nombres à virgule flottante), comme suit :

Copier le code Le code est le suivant :

varx = NaN;
x === NaN; // faux

Bien que JavaScript fournisse isNaN pour détecter si une certaine valeur est NaN, cela n'est pas très précis car il existe un processus de conversion implicite avant d'appeler la fonction isNaN, qui convertira les valeurs qui ne sont pas à l'origine NaN en NaN. , comme suit :

Copier le code Le code est le suivant :

estNaN("foo"); // vrai
estNaN(indéfini); // vrai
estNaN({}); // vrai
isNaN({ valueOf: "foo" }); // vrai

Après avoir testé le code ci-dessus avec isNaN, nous avons constaté que les chaînes, les objets non définis et même les objets renvoyaient tous vrai ! ! ! Cependant, on ne peut pas dire qu'ils sont aussi NaN, n'est-ce pas ? Dans l’ensemble, la conclusion est la suivante : la détection de NaN par isNaN n’est pas fiable ! ! !

Heureusement, il existe un moyen fiable et précis de détecter NaN. Nous savons tous que NaN est le seul qui ne s'égale pas à lui-même. Ensuite, nous pouvons utiliser le signe d'inégalité (!==) pour déterminer si un nombre est égal à lui-même, afin que NaN puisse être détecté, comme suit :

var a = NaN;
a !== a; // true
var b = "foo";
b !== b; // false
var c = undefined;
c !== c; // false
var d = {};
d !== d; // false
var e = { valueOf: "foo" };
e !== e; // false
Copier après la connexion

On peut également définir ce mode comme une fonction, de la façon suivante :

function isReallyNaN(x) {
return x !== x;
}
Copier après la connexion

OK, la méthode de détection NaN est aussi simple que cela. Continuons à discuter de la conversion implicite des objets !

Les objets peuvent être convertis en valeurs primitives. La méthode la plus courante consiste à les convertir en chaîne, comme suit :

"the Math object: " + Math; // "the Math object: [object Math]"
"the JSON object: " + JSON; // "the JSON object: [object JSON]"
Copier après la connexion

L'objet est converti en chaîne en appelant sa fonction toSting. Vous pouvez l'appeler manuellement pour vérifier :

Math.toString(); // "[object Math]"
JSON.toString(); // "[object JSON]"
Copier après la connexion

De même, les objets peuvent également être convertis en nombres via la fonction valueOf. Bien entendu, vous pouvez également personnaliser cette fonction valueOf, comme suit :

"J" + { toString: function() { return "S"; } }; // "JS"
2 * { valueOf: function() { return 3; } }; // 6
Copier après la connexion

Si un objet possède à la fois la méthode valueOf et la méthode toString, alors la méthode valueOf sera toujours appelée en premier, comme suit :

var obj = {
toString: function() {
return "[object MyObject]";
},
valueOf: function() {
return 17;
}
};
"object: " + obj; // "object: 17"
Copier après la connexion

Cependant, dans la plupart des cas, ce n'est pas ce que nous voulons. En général, essayez de rendre les valeurs représentées par valueOf et toString identiques (bien que les types puissent être différents).

Le dernier type de conversion de type forcé est souvent appelé « opération de vérité », comme if, ||, &&. Leurs opérandes ne sont pas nécessairement booléens. JavaScript convertira certaines valeurs non booléennes en valeurs booléennes grâce à des règles de conversion simples. La plupart des valeurs seront converties en vrai, seules quelques-unes sont fausses, ce sont : false, 0, -0, ”", NaN, null, indéfini, car il y a des nombres, des chaînes et des objets avec de fausses valeurs, donc, Il n'est pas très sûr d'utiliser directement la conversion de valeur de vérité pour déterminer si les paramètres d'une fonction sont transmis. Par exemple, il existe une fonction qui peut avoir des paramètres facultatifs avec des valeurs par défaut, comme suit :

function point(x, y) {
if (!x) {
x = 320;
}
if (!y) {
y = 240;
}
return { x: x, y: y };
}
Copier après la connexion

Cette fonction ignorera tout paramètre dont la vraie valeur est fausse, y compris 0, -0

;

Copier le code Le code est le suivant :

point(0, 0); // {x : 320, y : 240 >

Un moyen plus précis de détecter un élément non défini consiste à utiliser le type d'opération :

function point(x, y) {
if (typeof x === "undefined") {
x = 320;
}
if (typeof y === "undefined") {
y = 240;
}
return { x: x, y: y };
}
Copier après la connexion

Cette façon d'écrire permet de distinguer entre 0 et indéfini :

point(); // { x: 320, y: 240 }
point(0, 0); // { x: 0, y: 0 }
Copier après la connexion

Une autre méthode consiste à utiliser des paramètres pour comparer avec undéfini, comme suit :

if (x === undefined) { ... }
Copier après la connexion

Résumé :

1. Les erreurs de type peuvent être masquées par la conversion de type.

2. " " peut représenter à la fois une concaténation de chaînes et une addition arithmétique, en fonction de ses opérandes. Si l'un d'eux est une chaîne, alors il s'agit d'une concaténation de chaînes.

3. L'objet se convertit en nombre via la méthode valueOf et se convertit en chaîne via la méthode toString.

4. Les objets avec les méthodes valueOf doivent définir une méthode toString correspondante pour renvoyer des nombres égaux sous forme de chaîne.

5. Lors de la détection de certaines variables non définies, typeOf ou comparaison avec undefined doit être utilisé directement à la place de l'opération sur la valeur vraie.

C'est tout pour tout le monde sur la conversion de type implicite JavaScript, j'espère que cela vous sera utile !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

Créez vos propres applications Web Ajax Créez vos propres applications Web Ajax Mar 09, 2025 am 12:11 AM

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

10 JQUERY FUN ET PLIGINS DE GAMES 10 JQUERY FUN ET PLIGINS DE GAMES Mar 08, 2025 am 12:42 AM

10 plugins de jeu JQuery amusants pour rendre votre site Web plus attrayant et améliorer l'adhérence des utilisateurs! Bien que Flash soit toujours le meilleur logiciel pour développer des jeux Web occasionnels, JQuery peut également créer des effets surprenants, et bien qu'il ne soit pas comparable aux jeux Flash Pure Action, dans certains cas, vous pouvez également vous amuser inattendu dans votre navigateur. jeu jquery tic toe Le "Hello World" de la programmation de jeux a désormais une version jQuery. Code source JQUERY Crazy Word Composition Game Il s'agit d'un jeu de remplissage, et il peut produire des résultats étranges en raison de ne pas connaître le contexte du mot. Code source Jeu de balayage de la mine jQuery

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Tutoriel JQuery Parallax - Contexte d'en-tête animé Tutoriel JQuery Parallax - Contexte d'en-tête animé Mar 08, 2025 am 12:39 AM

Ce tutoriel montre comment créer un effet de fond de parallaxe captivant à l'aide de jQuery. Nous allons construire une bannière d'en-tête avec des images en couches qui créent une profondeur visuelle étonnante. Le plugin mis à jour fonctionne avec jQuery 1.6.4 et plus tard. Télécharger le

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Commencer avec Matter.js: Introduction Commencer avec Matter.js: Introduction Mar 08, 2025 am 12:53 AM

Matter.js est un moteur de physique du corps rigide 2D écrit en JavaScript. Cette bibliothèque peut vous aider à simuler facilement la physique 2D dans votre navigateur. Il fournit de nombreuses fonctionnalités, telles que la capacité de créer des corps rigides et d'attribuer des propriétés physiques telles que la masse, la zone ou la densité. Vous pouvez également simuler différents types de collisions et de forces, tels que la frottement de gravité. Matter.js prend en charge tous les navigateurs grand public. De plus, il convient aux appareils mobiles car il détecte les touches et est réactif. Toutes ces fonctionnalités font de votre temps pour apprendre à utiliser le moteur, car cela facilite la création d'un jeu ou d'une simulation 2D basé sur la physique. Dans ce tutoriel, je couvrirai les bases de cette bibliothèque, y compris son installation et son utilisation, et fournir un

Rafraîchissement automatique du contenu div utilisant jQuery et Ajax Rafraîchissement automatique du contenu div utilisant jQuery et Ajax Mar 08, 2025 am 12:58 AM

Cet article montre comment actualiser automatiquement le contenu d'un div toutes les 5 secondes à l'aide de jQuery et Ajax. L'exemple récupère et affiche les derniers articles de blog d'un flux RSS, ainsi que le dernier horodatage de rafraîchissement. Une image de chargement est en optiona

See all articles