recherche
Maisoninterface Webjs tutorielQu'est-ce que la conversion de type implicite ? Introduction à la conversion de type implicite js

Cet article vous explique ce qu'est la conversion de type implicite ? L'introduction à la conversion de type implicite js a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'elle vous sera utile.

Les types de données JavaScript sont très faibles. 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 eux avant l'opération. Ce qui suit est l'ajout de types numériques et de types booléens :

3 + true; 
// 结果:4

Le. le résultat est une valeur numérique ! S'il s'agit d'un environnement C ou Java, l'opération ci-dessus provoquera 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. comme appeler une non-fonction, ou lire Lors de la prise d'attributs nuls ou non définis, c'est comme suit :

"hello"(1); 
//结果: error: not a function
null.x; 
// 结果:error: cannot read property 'x' of null

Dans la plupart des cas, JavaScript ne fera pas d'erreur, 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, il s'agit d'un signe arithmétique plus. est une chaîne. Le symbole de connexion dépend de ses opérandes, comme suit :

2 + 3; 
//结果: 5
"hello" + " world"; 
// 结果:"hello world"

Cependant, si des chaînes et des nombres sont ajoutés, JavaScript convertira automatiquement les nombres en caractères, que le nombre vienne en premier ou la chaîne Tout d'abord, comme suit :

"2" + 3; 
// 结果:"23"
2 + "3";
 //结果: "23"

Le résultat de l'ajout d'une chaîne et d'un nombre est une chaîne !

Il est à noter que le sens de fonctionnement du "+" est de gauche à droite, comme suit :

1 + 2 + "3"; 
// "33"

Cela équivaut à ce qui suit :

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

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

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 convient de noter que NaN et NaN ne sont pas égaux (cela est dû à la précision des nombres à virgule flottante), comme suit :

var x = NaN;
x === NaN; // false

Bien que JavaScript fournisse isNaN pour détecter si une valeur est NaN, Cependant , ce n'est pas très précis, car avant d'appeler la fonction isNaN, il y a un processus de conversion implicite, qui va convertir les valeurs qui ne sont pas NaN en NaN, comme suit :

isNaN("foo"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN({ valueOf: "foo" }); // true

Dans le code ci-dessus , après avoir utilisé isNaN pour tester, nous avons constaté que les chaînes, les objets non définis et même les objets renvoyaient tous vrai ! ! ! Mais ce ne sont pas des NaN.

En bref : isNaN la détection de NaN n'est pas fiable ! ! !

Il existe un moyen fiable et précis de détecter NaN.

Nous savons tous que seul NaN n'est pas égal à lui-même. Vous pouvez utiliser le signe d'inégalité (!==) pour déterminer si un nombre est égal à lui-même. Par conséquent, NaN peut ê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

On peut également définir ce mode comme une fonction, de la manière suivante :

function isReallyNaN(x) {
    return x !== x;
}

Conversion implicite des objets

Les objets peuvent être convertis en valeur primitive, la méthode la plus courante est de le convertir en chaîne, comme suit :

"the Math object: " + Math; // "the Math object: [object Math]"
"the JSON object: " + JSON; // "the JSON object: [object JSON]"

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

Math.toString(); // "[object Math]"
JSON.toString(); // "[object JSON]"

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

"J" + { toString: function() { return "S"; } }; // "JS"
2 * { valueOf: function() { return 3; } }; // 6

Si. un objet a à la fois la méthode valueOf et la méthode toString, alors la méthode value Of sera toujours appelée en premier, comme suit :

var obj = {
    toString: function() {
        return "[object MyObject]";
    },
    valueOf: function() {
        return 17;
    }
};
"object: " + obj; // "object: 17"

Généralement, value Of et toString doivent être exprimées autant que possible. sont les mêmes (bien que les types puissent être différents).

Le dernier type de conversion de type forcée, nous l'appelons souvent « opération de valeur de vérité », comme si, ||, &&, 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, elles sont  : false, 0, -0, "", NaN, null, undefined, car il y a des nombres, des chaînes et des objets. La valeur est fausse, il n'est donc pas sûr d'utiliser directement la conversion de valeur vraie 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 };
}

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

Une façon plus précise de détecter un défini est d'utiliser le type d'opération :
point(0, 0); // { x: 320, y: 240 }

Cette façon d'écrire peut distinguer entre 0 et undéfini :
function point(x, y) {
if (typeof x === "undefined") {
    x = 320;
}
if (typeof y === "undefined") {
    y = 240;
}
    return { x: x, y: y };
}

Une autre méthode Il utilise des paramètres pour comparer avec undefined, comme suit :
point(); // { x: 320, y: 240 }
point(0, 0); // { x: 0, y: 0 }

if (x === undefined) { ... }
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 value Of, et se convertit en chaîne via la méthode toString.

4. Les objets avec des méthodes value Of 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, le type Of ou la comparaison avec undefined doivent être utilisés directement à la place de l'opération sur la valeur vraie.

Recommandations associées :

Résumé de la conversion de type implicite JS

Comment utiliser la conversion implicite ? Résumer l'utilisation d'exemples de conversion implicite

Une brève introduction à la conversion de type implicite des types de données JavaScript_compétences Javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
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
Node.js diffuse avec dactylographieNode.js diffuse avec dactylographieApr 30, 2025 am 08:22 AM

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Python vs JavaScript: considérations de performance et d'efficacitéPython vs JavaScript: considérations de performance et d'efficacitéApr 30, 2025 am 12:08 AM

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

Les origines de JavaScript: explorer son langage d'implémentationLes origines de JavaScript: explorer son langage d'implémentationApr 29, 2025 am 12:51 AM

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

Dans les coulisses: quel langage alimente JavaScript?Dans les coulisses: quel langage alimente JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

L'avenir de Python et Javascript: tendances et prédictionsL'avenir de Python et Javascript: tendances et prédictionsApr 27, 2025 am 12:21 AM

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.

Python vs JavaScript: environnements et outils de développementPython vs JavaScript: environnements et outils de développementApr 26, 2025 am 12:09 AM

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

JavaScript est-il écrit en C? Examiner les preuvesJavaScript est-il écrit en C? Examiner les preuvesApr 25, 2025 am 12:15 AM

Oui, le noyau du moteur de JavaScript est écrit en C. 1) Le langage C fournit des performances efficaces et un contrôle sous-jacent, qui convient au développement du moteur JavaScript. 2) Prendre le moteur V8 comme exemple, son noyau est écrit en C, combinant l'efficacité et les caractéristiques orientées objet de C. 3) Le principe de travail du moteur JavaScript comprend l'analyse, la compilation et l'exécution, et le langage C joue un rôle clé dans ces processus.

Rôle de JavaScript: rendre le Web interactif et dynamiqueRôle de JavaScript: rendre le Web interactif et dynamiqueApr 24, 2025 am 12:12 AM

JavaScript est au cœur des sites Web modernes car il améliore l'interactivité et la dynamicité des pages Web. 1) Il permet de modifier le contenu sans rafraîchir la page, 2) manipuler les pages Web via Domapi, 3) prendre en charge les effets interactifs complexes tels que l'animation et le glisser-déposer, 4) Optimiser les performances et les meilleures pratiques pour améliorer l'expérience utilisateur.

See all articles

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel