Je vois souvent de nombreuses déclarations abrégées d'expression conditionnelle dans les codes des personnes formidables partout. Après avoir lu certains articles introduisant cet aspect, je pense que 3 Ways 2 dit que si cet article (http://www.thomasfrank.se/3_ways_2_say_if.html) n'est pas mauvais. Dans cet article, l'auteur a résumé les caractéristiques et les utilisations des expressions traditionnelles de si ... else ... ,?:, && / ||, et les a résumées comme suit:
1. Si ... Sucture de la structure
// Définir R sur 0 ou 1 var r = math.floor (2 * math.random ()) // Définissez A, B et C sur "Small" si r == 0 An else les a mis sur "Big" // en utilisant trois techniques différentes // Méthode 1: si else var a; if (r == 0) {a = "small"} else {a = "big"}; // Méthode 2: Opérateur conditionnel var b = r == 0? "Small": "Big"; // Méthode 3: et / ou les opérateurs var c = r == 0 && "small" || "grand"; // Vérifiez les valeurs de nos variables alerte (r + "" + a + "" + b + "" + c);2. Si ... sinon si ...
// Définissez R sur 0,1,2 ou 3 var r = math.floor (4 * math.random ()) // Définissez A, B et C sur "Nada", "Small", "Big" et "Énorme" // en fonction de la valeur ou R en utilisant trois techniques différentes // Méthode 1: si .. sinon ... else var a; if (r == 0) {a = "nada"} else if (r == 1) {a = "small"} else if (r == 2) {a = "big"} else {a = "énorme"}; // Méthode 2: Opérateurs conditionnels var b = r == 0? "nada": r == 1? "Small": r == 2? "Big": "énorme"; // Méthode 3: et / ou les opérateurs var c = r == 0 && "nada" || r == 1 && "small" || r == 2 && "big" || "énorme"; // Vérifiez les valeurs de nos variables alerte (r + "" + a + "" + b + "" + c);3. Exécutez la fonction
// Définit R sur 0,1,2 ou 3 var r = math.floor (4 * math.random ()) // la variable globale x et nos quatre fonctions var x = ""; nada = function () {x + = "nada!"}; small = function () {x + = "small!"}; big = function () {x + = "big!"}; ÉNORME = fonction () {x + = "énorme!"}; // appelle une fonction spécifique en fonction de la valeur de r // en utilisant trois techniques différentes // Méthode 1: if .. else if ... else if ... else if (r == 0) {nada ()} else if (r == 1) {small ()} else if (r == 2) {big ()} else {énorme ()}; // Méthode 2: Opérateurs conditionnels r == 0? nada (): r == 1? petit (): r == 2? Big (): énorme (); // Méthode 3: et / ou les opérateurs r == 0 && (nada () || true) // nada () ne renvoie pas nécessairement True. Afin de s'assurer que la logique ultérieure ou || Les jugements ne sont pas exécutés, une véritable valeur doit être renvoyée, la même ci-dessous || r == 1 && (small () || true) || r == 2 && (big () || true) || énorme(); // Vérifiez les valeurs de nos variables alerte (R + "" + x);4. Exécuter le code
// Définit R sur 0,1,2 ou 3 var r = math.floor (4 * math.random ()) // la variable globale x var x = ""; // Exécution de code différent en fonction de la valeur de r // en utilisant trois techniques différentes // Méthode 1: if .. else if ... else if (r == 0) {x + = "nada!"} Else if (r == 1) {x + = "small!"} Else if (r == 2) {x + = "big!"} Else {x + = "énorme!"}; // Méthode 2: Opérateurs conditionnels r == 0? function () {x + = "nada!"} (): r == 1? function () {x + = "petit!"} (): r == 2? function () {x + = "big!"} (): function () {x + = "énorme!"} (); // Méthode 3: et / ou les opérateurs r == 0 && (function () {x + = "nada!"} () || true) // quelqu'un a souligné dans le commentaire que les fonctions anonymes ici sont inutiles, et c'est le cas lorsqu'il n'y a qu'un seul code exécutable, mais s'il n'y a pas de code multiple à exécuter, les fonctions anonymes sont toujours bonnes ||| r == 1 && (function () {x + = "small!"} () || true) || r == 2 && (function () {x + = "big!"} () || true) || function () {x + = "énorme!"} (); // Vérifiez les valeurs de nos variables alerte (R + "" + x);Dans cet article en ligne, l'accent de l'auteur se concentre sur la brièveté du code, donc en général, l'auteur préfère utiliser l'opérateur?: Et estime que && et || Les méthodes doivent taper quelques lettres supplémentaires, ce qui le rend plus lourd. Lors de l'exécution des fonctions, il est plus pratique d'utiliser le si ... sinon traditionnel. Dans ses commentaires, certaines personnes ont suggéré que rendre le code côté client plus simple et plus court est plus efficace que d'améliorer une certaine efficacité de fonctionnement discrète, ce qui est également correct dans certains programmes. Par conséquent, il peut être plus important de choisir une forme plus concise pour traiter les déclarations conditionnelles dans une perspective formelle que l'efficacité opérationnelle de ces déclarations elles-mêmes, sans oublier que l'efficacité opérationnelle variera de UA à UA.
Dans le jugement qu'il n'y a que deux conditions, en utilisant si ... else ou ?: sont tous les deux simples, tandis que les méthodes de fonctionnement de && et || sont un peu compliqués. Mais en fait, tant que vous comprenez les deux principes de base suivants, tous les problèmes seront résolus:
Tout d'abord, lorsque vous utilisez la logique et && et logique ou || Opérateurs, la direction est de gauche à droite. Le && s'arrête lorsque la première valeur est fausse (ou valeur qui peut être convertie en false, telles que null / undefined / 0 / "" / nan, etc.), et s'arrête lorsque la première valeur est vraie (ou valeur qui peut être convertie en true); La valeur renvoyée par la condition entière est la valeur de la dernière condition détectée, pas nécessairement juste vrai / false.
Deuxièmement, la logique a une priorité plus élevée que l'opérateur && que l'opérateur logique ou.
Selon le premier principe, R == 0 et "Small" sont calculés dans l'ordre de gauche à droite. Si R == 0 est vrai, "Small" sera détecté. "Small" est une chaîne non vide, donc C sera considéré comme "petit"; Si R == 0 est faux, la deuxième condition "Big" Detection de la logique ou || est directement démarré. De même, C doit être considéré comme "grand". Selon le deuxième principe, il n'est pas nécessaire d'ajouter des supports pendant le fonctionnement de la variable C dans le code ci-dessus.
Depuis l'utilisation du?: Et &&, || Les opérateurs peuvent jouer un rôle dans la simplification du code dans un certain programme, il est très important dans le code source de la bibliothèque tels que jQuery. En résumé, ce type d'opérateur dispose de deux applications principales: l'une consiste à attribuer ou à renvoyer des valeurs, et l'autre consiste à exécuter du code (pour l'instant, le classer).
Les usages de cession sont partout dans JQuery ou d'autres bibliothèques. Une application classique consiste à implémenter la fonction des valeurs par défaut pour les interfaces. Nous pouvons facilement écrire un tel code, comme:
var myoBj = fonction (options) {var color = options.color || this.defaults.defaults; var backgroundColor = options.backgroundColor || this.defaults.backgroundcolor;}; myobj.prototype.defaults = {couleur: "# 393939", backgroundColor: "# 222"} var myins = new myoBj ({Color: "# 80ff80"}); console.log ("Color:" + Myins.Color + ", BackgroundColor:" + MyInsBroverdColter);Que cela fonctionne ?: ou && et ||, comme ils n'ont pas la fonction de bloc de code inné de if ... else (enveloppé avec {} numéro), ils ne peuvent exécuter que du code unique, tel que:
(xmlhttprequest.readystate == 4 && xmlhttprequest.status == 200)? alert ("Success!"): alert ("échec!");Donc, s'il existe plusieurs codes qui doivent être exécutés, des fonctions anonymes doivent être utilisées. comme:
(xmlhttprequest.readystate == 4 && xmlhttprequest.status == 200)? function () {alert ("Success!"); var a = 100; alert (a);}: alert ("défaillance!");Il y a trop d'abréviations dans JQuery 1.7.1 Code source, comme la ligne 2643:
// Hook pour booléen attributesboolhook = {get: function (elem, name) {// aligner les attributs booléens avec des propriétés correspondantes // se replier à l'attribut de présence où certains booléens ne sont pas pris en charge var attrnode, propriété = jQuery.prop (elem, nom); propriété de retour === true || Typeof Property! == "Boolean" && (attNode = elem.getAttributeNode (name)) && attrnode.nodevalue! == false? name.tolowercase (): indéfini; }, set: function () {...}}Il semble que nous devons continuer à apprendre et à résumer.
La phrase conditionnelle à l'abréviation JavaScript ci-dessus (recommandée) est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.