Maison interface Web js tutoriel Analyse du mécanisme de conversion implicite des doubles signes égaux en Javascript

Analyse du mécanisme de conversion implicite des doubles signes égaux en Javascript

Jan 20, 2018 am 11:26 AM
javascript js 机制

Cet article présente principalement en détail le mécanisme de conversion implicite du double signe égal (==) en JavaScript. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer.

Il existe deux types de signes d'égalité en Javascript : le double signe égal (==) et le triple signe égal (===). Le double signe égal (==) indique l'égalité des valeurs, tandis que le triple signe égal (===) indique l'égalité stricte (si les valeurs et les types sont complètement égaux).

Il y a donc quelques connaissances de bon sens :

1. Pour les types de base tels que la chaîne et le nombre, il y a une différence entre == et ===

1) Entre différents types Comparez, == comparez les "valeurs converties dans le même type" pour voir si les "valeurs" sont égales, === si les types sont différents, le résultat sera inégal

 2) Comparez le même type, exécutez directement "value" "Comparez, les résultats sont les mêmes

2. Pour les types avancés tels que Array et Object, il n'y a pas de différence entre == et ===

Effectuez une comparaison "adresse de pointeur"

3. Il existe une différence entre les types de base et les types avancés, == et ===

 1) Pour ==, convertissez le type avancé en un type de base et effectuez une comparaison de "valeur"

 2 ) Parce que les types sont différents, le résultat === est faux

En d'autres termes, le double signe égal (==) effectuera conversion de type pendant le fonctionnement, mais pas le triple signe égal (===).

Par exemple :

alert('55' == 55); //true
alert('55' === 55); //false
Copier après la connexion

Les cinq types de données de base (valeurs primitives, également appelées types de données simples) dans le langage Javascript : Indéfini, Null, Booléen, Nombre et Chaîne. Étant donné que ces types primitifs occupent une quantité d'espace fixe, ils peuvent être stockés dans une zone de mémoire plus petite : la pile. Un tel stockage facilite la recherche rapide des valeurs des variables ;

Le mécanisme de conversion implicite utilisant le double signe égal (==) en Javascript pour déterminer l'égalité :

1, si les deux côtés sont des types simples :

 1,1, si les deux côtés sont des types simples et que les types sont les mêmes, ils seront comparés directement.

console.log(1==1); //true
console.log("1"=="1"); //true
console.log(false==false); //true
console.log(null==null); //true
console.log(undefined==undefined); //true
Copier après la connexion

1.2. Les deux côtés sont des types simples. Si les types sont différents, ils seront d'abord convertis en comparaison numérique (le booléen n'a que deux valeurs : true==1, false==0 ; null et undefined sont égaux ; les caractères Les numéros de chaîne sont égaux aux valeurs numériques, chaîne vide ""==0;)

console.log(1==true); //true
console.log(0==false); //true
console.log(1=="1"); //true
console.log(0==""); //true
console.log(0==null); //false
console.log(0==undefined); //false
console.log(null==undefined); //true
Copier après la connexion

2. Si un côté est un type simple et l'autre côté est un type référence (avancé). type), le type avancé est implicitement converti en types simples et comparés à nouveau.

console.log(Object==Object); //true
console.log(Object=={}); //false
console.log(0=={}); //false
console.log(0==[]); //true
console.log(Array==Array); //true
console.log(Object==Array); //false
Copier après la connexion

3. Si les deux côtés sont des types de référence (types avancés), une comparaison "adresse du pointeur" est effectuée.

Points clés-toString() et valueOf()

La première impression que beaucoup de gens ont en voyant ces deux méthodes est que la méthode toString() convertit un objet en chaîne, et la méthode valueOf La méthode le convertit en chaîne Convertit un objet en valeur numérique.

Cette idée est très unilatérale. Jetons un coup d'œil aux deux exemples suivants :

var obj={
  name:"熊仔其人",
  getName:function(){ return $(this).name; }
};
console.log(obj.toString()); //[object Object]
Copier après la connexion

Définissez un objet obj et appelez sa méthode toString. La valeur de retour est [object Object. ] Discovery ne renvoie pas une représentation sous forme de chaîne de son contenu comme nous le pensions.

var arr=[1,2,3];
console.log(arr.valueOf()); //(3) [1, 2, 3]
Copier après la connexion

Définissez un tableau arr, appelez sa méthode valueOf, la valeur de retour est [1, 2, 3], et constatez qu'il ne renvoie pas de représentation numérique comme nous l'imaginions.

En fait, la vraie compréhension est la suivante : appeler la méthode toString() de l'objet peut convertir l'objet en chaîne, mais si vous souhaitez le convertir en chaîne, vous n'avez pas nécessairement besoin d'appeler toString méthode.

Regardons à nouveau le code ci-dessous.

var obj= { };   
obj.valueOf=function(){ return 1; }
obj.toString=function(){ return 2; }
console.log(obj==1);  //true
var obj2= { };   
obj2.valueOf=function(){ return 2; }
obj2.toString=function(){ return 1; }
console.log(obj2==1);  //false                                      
var obj3={ };
obj3.valueOf=function(){ return []; }
obj3.toString=function(){ return 1; }
console.log(obj3==1);  //true
Copier après la connexion

Dans le code ci-dessus, nous avons défini un objet obj, obj2, et défini les valeurs de retour des méthodes valueOf et toString En les comparant avec 1 pour l'égalité, nous avons constaté que la méthode valueOf. a été appelé en premier.

Définit ensuite un objet obj3, définit la valeur de retour des méthodes valueOf et toString, et la compare avec 1 pour constater qu'il appelle la méthode toString.

Regardons ensuite le morceau de code suivant :

var obj= { };   
obj.valueOf=function(){ return 'a'; }
obj.toString=function(){ return 2; }
console.log(obj=='a');  //true
var obj2= { };   
obj2.valueOf=function(){ return 'b'; }
obj2.toString=function(){ return 'a'; }
console.log(obj2=='a');  //false
Copier après la connexion

Un objet obj est défini dans le code 2 ci-dessus. En le comparant avec la chaîne 'a', on constate que il appelle la méthode valueOf.

Ensuite, la comparaison entre l'objet obj2 et 'a' renvoie false, et on constate que la méthode toString n'est pas appelée.

De là, nous pouvons tirer la conclusion :

Lorsque l'objet est converti en un type simple, la méthode valueOf sera appelée en premier. Si elle peut être comparée à une valeur simple, elle le sera. être comparé directement, et la méthode toString ne sera plus appelée pour le moment. Si la méthode valueOf ne peut pas être comparée à une valeur simple après avoir appelé la méthode valueOf, la méthode toString sera à nouveau appelée pour enfin obtenir le résultat de la comparaison.

Mais une chose à noter est que l'objet Date ne répond pas aux règles ci-dessus. Les méthodes toString et valueOf de l'objet Date ont été redéfinies et la méthode toString sera appelée par défaut.

PS : règles de conversion implicites du double signe égal js

Lors de l'utilisation du double signe égal à des fins de comparaison, lorsque les deux types d'opérandes sont différents, le double signe égal effectuera une conversion implicite Convertir, convertir en le même type, puis comparez. Voici les règles de conversion, qui se trouvent à la page P51 du Petit Livre Rouge. (J'oublie toujours, mais je pense toujours qu'une bonne mémoire n'est pas aussi bonne qu'une mauvaise écriture. L'écriture a toujours un impact profond)

1. Un opérande est une valeur booléenne. Convertissez la valeur booléenne en valeur numérique. puis comparez-le. False est 0, true est 1.

2 L'un est une chaîne et l'autre est un nombre. Convertissez des chaînes en nombres et comparez-les.

3. Un opérateur est un objet et l'autre n'est pas un objet. Utilisez d'abord valueOf() pour obtenir le type de valeur de l'objet, puis comparez selon d'autres règles.

Recommandations associées :

Explication détaillée des différences et exemples de connexion entre if et switch, == et === en JavaScript

Explication détaillée de l'utilisation de la comparaison de chaînes d'opérateurs == de PHP et de ses exemples d'effets secondaires

Conversion implicite des types de données Oracle

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 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 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Dec 18, 2023 pm 03:39 PM

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Compréhension approfondie des mécanismes de recalcul et de rendu de la mise en page CSS Compréhension approfondie des mécanismes de recalcul et de rendu de la mise en page CSS Jan 26, 2024 am 09:11 AM

La redistribution et le repaint CSS sont des concepts très importants dans l'optimisation des performances des pages Web. Lors du développement de pages Web, comprendre le fonctionnement de ces deux concepts peut nous aider à améliorer la vitesse de réponse et l'expérience utilisateur de la page Web. Cet article approfondira les mécanismes de redistribution et de repeinture CSS et fournira des exemples de code spécifiques. 1. Qu'est-ce que la redistribution CSS ? Lorsque la visibilité, la taille ou la position des éléments dans la structure DOM change, le navigateur doit recalculer et appliquer les styles CSS, puis réorganiser

L'ère de l'IA de JS est arrivée ! L'ère de l'IA de JS est arrivée ! Apr 08, 2024 am 09:10 AM

Introduction à JS-Torch JS-Torch est une bibliothèque JavaScript d'apprentissage en profondeur dont la syntaxe est très similaire à celle de PyTorch. Il contient un objet tensoriel entièrement fonctionnel (peut être utilisé avec des dégradés suivis), des couches et des fonctions d'apprentissage en profondeur et un moteur de différenciation automatique. JS-Torch convient à la recherche sur l'apprentissage profond en JavaScript et fournit de nombreux outils et fonctions pratiques pour accélérer le développement de l'apprentissage profond. Image PyTorch est un framework d'apprentissage profond open source développé et maintenu par l'équipe de recherche de Meta. Il fournit un riche ensemble d'outils et de bibliothèques pour créer et former des modèles de réseaux neuronaux. PyTorch est conçu pour être simple, flexible et facile à utiliser, et ses fonctionnalités de graphique de calcul dynamique font

méthode js pour actualiser la page actuelle méthode js pour actualiser la page actuelle Jan 24, 2024 pm 03:58 PM

js pour actualiser la page actuelle : 1. location.reload(); 2. location.href; 3. location.assign(); Introduction détaillée : 1. location.reload(), utilisez la méthode location.reload() pour recharger la page actuelle ; 2. location.href, vous pouvez actualiser la page actuelle en définissant l'attribut location.href, etc.

See all articles