1. Classification
Types de données de base: non définis, nuls, chaîne, booléen, numéro
Type de données complexe: objet
L'attribut de l'objet est défini sous la forme d'une paire de nom et de valeur non ordonnée (nom: valeur).
2. Explication détaillée
1. UNDEFINED : Le type non défini n'a qu'une seule valeur: non définie. Lorsqu'une variable est déclarée en utilisant VAR mais non initialisée, la valeur de cette variable n'est pas définie.
Les variables contenant des valeurs non définies sont différentes des variables qui n'ont pas été définies. L'exemple suivant peut illustrer:
La copie de code est la suivante:
var Demo1; // déclaré mais non initialisé
alerte (démo1); // non défini
alert (Demo2); // Signaler une erreur, Demo2 n'est pas définie
2. NULL : il n'y a qu'une seule valeur pour le type nul: null. D'un point de vue logique, la valeur nul représente un pointeur d'objet vide.
Si la variable définie est prête à être utilisée pour enregistrer l'objet à l'avenir, il est préférable d'initialiser la variable à Null au lieu d'autres valeurs. De cette façon, simplement en détectant directement la valeur nul, vous pouvez savoir si la variable correspondante a enregistré la référence d'un objet, par exemple:
La copie de code est la suivante:
if (car! = null)
{
// effectuer des opérations sur l'objet de la voiture
}
En fait, les valeurs non définies sont dérivées de valeurs nulles, donc ECMA-262 spécifie que leurs tests d'égalité devraient retourner vrai.
alerte (undefined == null); //vrai
Bien que null et indéfinis aient une telle relation, leurs utilisations sont complètement différentes. Dans tous les cas, il n'est pas nécessaire de définir explicitement la valeur d'une variable non définie, mais la même règle ne s'applique pas à NULL. En d'autres termes, tant que la variable destinée à enregistrer l'objet n'a pas encore enregistré l'objet, la variable doit être explicitement autorisée à enregistrer la valeur nul. Cela ne reflète pas seulement la convention de Null comme pointeur pour les objets nuls, mais aide également à distinguer davantage null et non défini.
3. Boolean : le type booléen a deux valeurs: vrai et faux. Ces deux valeurs ne sont pas les mêmes que les valeurs numériques, donc le vrai n'est pas nécessairement égal 1, et FAUX ne correspond pas nécessairement à 0.
Il convient de noter que les valeurs littérales du type booléen sont sensibles à la casse, c'est-à-dire ni vraie ni fausse (et d'autres formes de mélange de cas) ne sont des valeurs booléennes, mais ne sont que des identifiants.
Bien qu'il n'y ait que deux valeurs littérales pour les types booléens, tous les types de valeurs en JavaScript ont des valeurs équivalentes à celles de ces deux valeurs booléennes. Pour convertir une valeur à sa valeur booléenne correspondante, vous pouvez appeler la fonction de conversion de type boolean (), par exemple:
La copie de code est la suivante:
var message = 'Hello World';
var messageasboolean = boolean (message);
Dans cet exemple, le message de chaîne est converti en une valeur booléenne, qui est stockée dans la variable MessageaSboolean. La fonction boolean () peut être appelée sur des valeurs de tout type de données et une valeur booléenne sera toujours renvoyée. Quant à savoir si la valeur retournée est vraie ou fausse, elle dépend du type de données pour convertir la valeur et sa valeur réelle. Le tableau suivant montre les règles de conversion pour divers types de données et leurs objets.
Ces règles de conversion sont très importantes pour comprendre l'exécution automatique des transformations booléennes correspondantes dans les instructions de contrôle des flux (comme si les instructions), par exemple:
La copie de code est la suivante:
var message = 'Hello World';
if (message) // équivalent à if (boolean (message) == true)
{
alert ("la valeur est vraie"); // la valeur est vraie
}
En raison de cette transformation booléenne automatique, il est crucial de savoir exactement quelles variables sont utilisées dans l'instruction de contrôle des flux.
4. Numéro: entier et point flottant
4.1 entier: lors de la réalisation de calculs, tous les nombres octaux et hexadécimaux seront convertis en décimal
4.2 Point flottant: La précision la plus élevée d'une valeur de point flottante est de 17 bits, donc sa précision est bien inférieure à celle d'un entier lors du calcul de l'arithmétique. Par exemple: le résultat de 0,1 + 0,2 n'est pas de 0,3, mais 0,3000000000000000000004. Par exemple:
La copie de code est la suivante:
a = 0,2;
b = 0,1;
if (a + b == 0,3) {
alert ("bonjour");
}
autre{
alert ("hi");
}
Le résultat apparaîtra "Hi", alors ne testez pas une valeur de point flottante spécifique.
4.3 NAN: Non-numerique pas un nombre, cette valeur est utilisée pour représenter un cas où un opérande qui voulait à l'origine renvoyer une valeur n'a pas renvoyé de valeur (cela ne lancera pas d'erreur).
Nan lui-même a deux caractéristiques extraordinaires. Premièrement, toute opération impliquant NAN (par exemple NAN / 10) renverra NAN, une caractéristique qui peut entraîner des problèmes dans les calculs en plusieurs étapes. Deuxièmement, Nan n'est égal à aucune valeur, y compris Nan lui-même. Par exemple:
La copie de code est la suivante:
alerte (nan == nan); //FAUX
Il existe une fonction isnan () dans JavaScript. Cette fonction accepte un paramètre, qui peut être de tout type, et la fonction nous aidera à déterminer si ce paramètre n'est "pas une valeur numérique". Après avoir reçu une valeur, Isnan () tente de convertir cette valeur en valeur numérique. Certaines valeurs qui ne sont pas des valeurs numériques sont converties directement en valeurs numériques, telles que les valeurs de chaîne "10" ou booléennes. Toute valeur qui ne peut pas être convertie en une valeur numérique fera que cette fonction renvoie vrai. Par exemple:
La copie de code est la suivante:
alerte (Isnan (nan)); //vrai
alerte (Isnan (10)); // faux (10 est une valeur numérique)
alerte (Isnan ("10")); // false (peut être converti en valeur numérique 10)
alerte (Isnan ("bleu")); // vrai (ne peut pas être converti en valeur numérique)
alerte (Isnan ("BULE123")); // ture (ne peut pas être converti en valeur numérique)
alerte (Isnan (vrai)); // faux (peut être converti en une valeur de 1)
Il existe 3 fonctions qui peuvent convertir les valeurs non numériques en valeurs numériques: nombre (), parseInt () et parsefloat (). La première fonction, à savoir le numéro de fonction de transformation (), peut être utilisée pour n'importe quel type de données, tandis que les deux autres fonctions sont spécifiquement utilisées pour convertir les chaînes en valeurs numériques. Ces 3 fonctions rendront différents résultats pour la même entrée.
Les règles de conversion de la fonction numéro () sont les suivantes:
● S'il s'agit d'une valeur booléenne, True et False seront remplacés par 1 et 0 respectivement.
● S'il s'agit d'une valeur numérique, ce n'est qu'un simple pass et un retour.
● S'il s'agit d'une valeur nulle, retournez 0
● Si non défini, retournez NAN
● S'il s'agit d'une chaîne, suivez les règles suivantes:
○ Si la chaîne ne contient que des nombres, convertissez-le en valeur décimale, c'est-à-dire "1" deviendra 1, "123" deviendra 123, et "011" deviendra 11 (le 0 principal est ignoré)
○ Si la chaîne contient un format de point flottant valide, tel que "1.1", il est converti en numéro de point flottant correspondant (également, 0 sera ignoré)
○ Si la chaîne contient un format hexadécimal valide, comme "0xf", il est converti en une valeur entière décimale de la même taille
○ Si la chaîne est vide, convertissez-la en 0
○ Si la chaîne contient des caractères autres que le format ci-dessus, convertissez-les en nan
● S'il s'agit d'un objet, appelez la méthode de valeur de l'objet (), puis convertissez la valeur renvoyée en fonction des règles précédentes. Si le résultat de la conversion est NAN, la méthode toString () de l'objet est appelée, puis la valeur de chaîne renvoyée est convertie à son tour en fonction des règles précédentes.
La copie de code est la suivante:
var num1 = nombre ("Hello World"); // nan
var num2 = nombre (""); // 0
var num3 = nombre ("000011"); // 11
var num4 = nombre (true); // 1
Étant donné que la fonction Number () est plus compliquée et déraisonnable lors de la conversion des chaînes, la fonction parseInt () est plus couramment utilisée lors du traitement des entiers, et la fonction parsefloat () est souvent utilisée lors du traitement des nombres de points flottants. Pour plus de détails, veuillez consulter: http://www.cnblogs.com/yxfield/p/4167954.html
5. String
Le type de chaîne est utilisé pour représenter une séquence de caractères composée de caractères Unicode à 16 bits à zéro ou plus, c'est-à-dire une chaîne. Une chaîne peut être représentée par des citations simples (') ou des citations doubles (").
La copie de code est la suivante:
var str1 = "bonjour";
var str2 = 'bonjour';
La longueur de n'importe quelle chaîne peut être obtenue en accédant à sa propriété de longueur.
La copie de code est la suivante:
alerte (str1.length); // Sortie 5
Il existe deux façons de convertir une valeur en une chaîne. La première consiste à utiliser la méthode toString () que presque toutes les valeurs ont.
La copie de code est la suivante:
Var âge = 11;
var agaSsString = age.ToString (); // String "11"
var trouvé = true;
var FoundAsstring = Found.toString (); // String "true"
Les valeurs numériques, booléennes, objets et chaînes ont toutes des méthodes toString (). Mais les valeurs nulles et non définies n'ont pas cette méthode.
Dans la plupart des cas, appeler la méthode toString () n'a pas à passer les paramètres. Cependant, lorsque vous appelez la méthode toString () de la valeur numérique, vous pouvez transmettre un paramètre: la cardinalité de la valeur de sortie.
La copie de code est la suivante:
var num = 10;
alert (num.toString ()); // "10"
alerte (num.tostring (2)); // "1010"
alerte (num.tostring (8)); // "12"
alerte (num.tostring (10)); // "10"
alerte (num.tostring (16)); //"un"
À partir de cet exemple, nous pouvons voir qu'en spécifiant la cardinalité, la méthode toString () modifiera la valeur de sortie. La valeur 10 peut être convertie en différents formats numériques lors de la sortie en fonction de la cardinalité différente.
Sans savoir si la valeur à convertir est nul ou non définie, vous pouvez également utiliser la fonction de transformation String (), qui peut convertir tout type de valeur en chaîne. La fonction String () suit les règles de conversion suivantes:
● Si la valeur a une méthode toString (), la méthode est appelée (pas de paramètres) et le résultat correspondant est renvoyé.
● Si la valeur est nul, renvoyez "null"
● Si la valeur n'est pas définie, renvoyez "non défini"
6. Objet
Les objets sont en fait une collection de données et de fonctions. Les objets peuvent être créés en exécutant le nouvel opérateur suivi du nom du type d'objet à créer. En créant une instance d'objet de type et en ajoutant des propriétés et (ou) des méthodes, vous pouvez créer un objet personnalisé.
var o = nouvel objet ();
Toutes les propriétés et méthodes du type d'objet existent également dans des objets plus spécifiques. Chaque instance de l'objet a les propriétés et méthodes suivantes:
● Constructeur (constructeur) - Enregistre la fonction utilisée pour créer l'objet actuel
● HasownProperty (PropertyName) - Utilisé pour vérifier si la propriété donnée existe dans l'instance d'objet actuelle (pas dans le prototype de l'instance). Où, le nom de la propriété (PropertyName) comme paramètre doit être spécifié dans un formulaire de chaîne (par exemple: o.hasownproperty ("name"))
● isprototypeof (objet) - utilisé pour vérifier si l'objet entrant est un prototype d'un autre objet
● PropertyIsEnumerable (PropertyName) - Utilisé pour vérifier si une propriété donnée peut être énumérée à l'aide de la déclaration for-in.
● toString () - Renvoie la représentation de la chaîne de l'objet
● ValueOf () - Renvoie la représentation de la chaîne, de l'objet, numérique ou booléen. Habituellement, la valeur de retour de la méthode toString () est la même.
3. Petit test
La copie de code est la suivante:
typeof (nan)
typeof (infinité)
typeof (null)
typeof (non défini)
De nombreuses interviews poseront les questions ci-dessus ~~
Ce qui précède est une introduction à ces 6 types de données JavaScript. L'avez-vous compris clairement? J'espère que vous pouvez vous améliorer après avoir lu cet article.