1. Type non numérique à valeur numérique
Lors de l'utilisation de la conversion Number() :
Lorsque vous utilisez parseInt() pour convertir:
var num1 = parseInt ("10", 2); // 2 parse var num2 = parseInt ("10", 8); // 8 parse var num3 = parseInt ("10", 10); // 10 parse var num4 = parseInt ("10", 16); // 16 analyse en hexadécimal Lors de l'utilisation de la conversion parseFloat() :
La première différence entre parsefloat et parseInt est qu'elle rencontre un caractère numérique à virgule flottante non valide lors de l'analyse d'une chaîne, ce qui est bien plus que ParseInt.
Renvoie 0 lors de l'analyse des valeurs hexadécimales
var num = parsefloat ("0xa"); // 0var num = parseInt ("0xa"); // 10La fonction ParseFloat n'a pas de deuxième paramètre qui spécifie la cardinalité, donc seules les valeurs décimales sont analysées.
Si la chaîne est un entier, il renvoie un entier au lieu d'un numéro de point flottant
var num = parseFloat("2.125e7"); //31250000
2. Utilisez toString () pour produire des valeurs à différents chiffres
Cette barre s'applique aux entiers, nous pouvons utiliser ToString () pour retourner les entiers dans n'importe quel format binaire.
var num = 10; alert (num.toString ()); //"10"Alert(num.tostring(9)); //"11"Alert(num.tostring(16)); //"un"
3. Faites attention à Nan et Infinity lorsque les opérateurs bit
Lorsque vous utilisez des opérateurs de bits pour NAN et Infinity, les deux valeurs sont traitées comme 0. Si un opérateur de bit est appliqué à une valeur non numérique, la valeur est convertie en valeur numérique en utilisant la fonction Number ().
Une autre chose à noter est que le décalage droit non signé des nombres négatifs, et le changement droit non signé consiste à remplir l'espace vide avec 0, contrairement au changement droit signé avec des bits de signe, donc le changement droit non signé et le décalage droit signé des nombres positifs sont les mêmes, mais le nombre négatif est différent. L'opération de décalage droit non signé traitera le code binaire négatif comme le code binaire positif, et le nombre négatif est représenté dans le formulaire de complément, ce qui fera que le résultat du changement de droite non signé soit très différent.
var oldValue = -64; var newValue = OldValue >>> 5
4. Opérations numériques spéciales
Pour les opérations numériques, s'il existe un opérande nan, le résultat est NAN.
Utilisez une opération d'addition ou de soustraction d'un en un (+, -, plus ou un signe négatif) pour les valeurs non numériques. Si la valeur ne peut pas être convertie en une valeur numérique (convertie à l'aide de la méthode Number ()), NAN est renvoyé.
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valeurof: function () {return -1;}}; s1 = + s1; // 1 + passer à -: -1s2 = + s2; //1.1 -1.1S3 = + S3; // nan nanb = + b; // 0 0o = -o; // - 1 1La multiplication de l'infini et 0 est égale à Nan, et la multiplication du non 0 est l'infini et l'infini, selon le signe du multiplicateur. La multiplication de l'infini et de l'infini est égale à l'infini.
var num1 = infinité, num2 = 0, num3 = -2, num4 = -infinity; alert (num1 * num2); // nanalert (num1 * num3); // - InfinityAlert (num1 * num4); //-Infini
Zéro est divisé en zéro et est nan, et les nombres non nuls divisés par zéro sont l'infini ou la finfinity. Infinité divisée par l'infini comme nan
Pour le fonctionnement du modulo, l'équation suivante contient:
Infinity% 2 = nan; 2% -infinity = 2; 0% Infinity = 0; // Tant que le diviseur est 0, le diviseur n'est pas nan, le résultat est 0infinity% 0 = nan; // Le diviseur peut être n'importe quel nombre, et tant que le diviseur est 0, le résultat est Naninfinity% Infinity = nan
Opération d'ajout: si les deux opérandes sont des chaînes, + devient une concaténation de chaîne. Si l'un est une chaîne et l'autre est une valeur numérique, convertissez la valeur numérique en une chaîne, puis concaténez la chaîne. Si un opérande est un objet, la valeur booléenne appellera d'abord sa valeur de la méthode. Si rien, appelez la méthode TOSTRING. Ensuite, en fonction du type de valeur de retour, déterminez si le signe + doit être connecté à la chaîne ou ajouté.
Infinity + -infinity = nan; var p = {valeurof: function () {return -1; }}; var num = 1; var result = num + p; alert (résultat); // 0 Ajouter var p = {valueof: function () {return "pas un num"; }}; var num = 1; var result = num + p; alert (résultat); // 1 non une concaténation de num stringFonctionnement de la soustraction: L'opération de soustraction est très similaire à l'opération d'addition, et le traitement des objets est le même, donc je ne l'expliquerai plus.
Infinity - Infinity = nan; -infinity - -infinity = nan;
5. Utilisation d'opérateurs relationnels
Les opérateurs relationnels sont inférieurs à (<), supérieurs à (>), inférieurs ou égaux à (<=) et supérieurs ou égaux à (> =)
Tant qu'il y a une valeur, la comparaison numérique sera effectuée et l'autre n'est pas une valeur numérique, et elle sera convertie en valeur numérique. Utilisez d'abord la valeur de l'objet, puis utilisez ToString. En fait, peu importe le fonctionnement de l'objet, c'est vrai. S'il y a de la valeur, la valeur de la valeur est utilisée pour renvoyer la valeur, sinon ToString est utilisé pour renvoyer la valeur.
Les deux sont des chaînes, puis comparez la valeur de codage des caractères de la chaîne (valeur ASCII)
En ce qui concerne le premier, il convient de noter que lorsqu'une chaîne est une valeur numérique, lorsqu'une chaîne ne peut pas être convertie en valeur numérique, la situation suivante se produira sous le nom de NAN.
var result = "a" <3; // faux a convertit a en nanvar result = "a"> = 3; // faux n'importe quel nombre par rapport à Nan est faux
6. == et ===
En JavaScript, si les deux côtés de l'équation ont des types différents, ou qu'un seul objet est inclus, la comparaison sera divisée en deux situations, et la comparaison après transformation est directement comparée à l'absence de transformation. == consiste à convertir en premier et à comparer, === est de comparer directement sans conversion. Pour ===, il renvoie faux tant que les types ne sont pas égaux. Pour ==, il est divisé en situations suivantes:
Vrai sera converti en 1, FALSE sera converti en 0.
En comparant les chaînes avec les valeurs numériques, les chaînes sont converties en valeurs numériques.
S'il n'y a qu'un seul objet des deux côtés de l'équation, cet objet appellera la valeur de la valeur pour obtenir le type de base, tel que l'appel de la méthode TOSTRING sans la valeur de la méthode. Si les deux côtés sont des objets, aucune transformation ne sera effectuée.
var p = {"name": "a"}; var q = {"name": "a"} var o = p; alert (q == p); // faux les adresses des objets pointés par p et q sont différentes, bien que le contenu de l'objet soit la même alerte (o == p); //vraiVoici les comparaisons spéciales
null == undefined // truenan! = nan // truenan == nan // false "nan" == nan // falseUndEfined == 0 // falSenull == 0 // false
7. Déclaration pour
L'ordre de sortie des instructions pour in-in est imprévisible et l'ordre peut varier en fonction du navigateur.
Lorsque la variable à itérater n'est pas nul ou non définie, l'erreur ne sera plus jetée sous ECMAScript 5, mais le corps de la boucle ne sera pas exécuté. Si vous voulez une compatibilité vers l'avant, vous jugerez qu'elle n'est ni nulle ni indéfinie avant la boucle.
8. Déclaration Swethc
Le commutateur peut utiliser n'importe quel type de données.
La valeur d'un cas peut être une constante, une variable et une expression.
L'instruction Switch utilise l'opérateur de comparaison congruent (===) lors de la comparaison des valeurs.
var num = 25; switch (true) {case num <0: alert ("moins 0"); casser; Cas num> = 0: alert ("plus de 0"); casser; par défaut: alert ("erreur");}9 Utilisation de la fonction
S'il n'y a pas d'instruction de retour dans la fonction ou que le retour n'a pas de valeur de retour, la fonction renvoie non définie.
La définition d'une fonction n'est pas cohérente avec les paramètres de la fonction lors de l'appel. En d'autres termes, les deux paramètres (paramètres formels et paramètres réels) n'ont pas de connexion. Les variables fournies lors de la définition d'une fonction ne sont que plus pratiques à utiliser. Même s'ils ne sont pas définis, les paramètres transmis à la fonction peuvent être obtenus (par arguments []).
fonction howManyargs () {alert (arguments.length);} howManyargs ("a"); // 1Howmanyargs ("a", "b"); // 2Howmanyargs (); // 0La relation entre les paramètres formels et les arguments [] est le suivant, en faisant attention à la différence entre le mode strict et le mode non stricte.
fonction howManyargs (ss) {arguments [0] = "test"; arguments [1] = "test2" alerte (arguments [0]); // Test Alert (arguments [1]); // alerte TEST2 (SS); // test} howManyargs ("a"); fonction howManyargs (ss) {"utiliser strict" arguments [0] = "test"; arguments [1] = "test2" alert (arguments [0]); // testAlert (arguments [1]); // test2Alert (ss); // a} howManyargs ("a");10. Utilisation des paramètres de fonction
Lors de la définition d'une fonction, nous écrivons les paramètres utilisés dans les parenthèses de la fonction, mais il sera suffisamment inflexible lorsqu'il y aura plusieurs paramètres facultatifs. À l'heure actuelle, nous pouvons utiliser des objets pour encapsuler plusieurs paramètres optionnels.
fonction afficheInfo (args) {var output = ""; if (typeof args.name == "string") {output + = "name:" + args.name + "/ n"; } if (typeof args.age == "nombre") {output + = "Age:" args.age + "/ n"; } alert (sortie); } displayInfo ({name: "Nicholas", âge: 29}); DisplayInfo ({name: "greg"});