A menudo veo muchas declaraciones de expresión condicional abreviadas en los códigos de grandes personas en todas partes. Después de leer algunos artículos que introducen este aspecto, creo que 3 formas 2 dice si este artículo (http://www.thomasfrank.se/3_ways_2_say_if.html) no es malo. En este artículo, el autor resumió las características y usos de las expresiones tradicionales de if ... else ...,?:, &&/||, y las resumió de la siguiente manera:
1. Si ... de lo contrario estructura
// Establecer r a 0 o 1 var r = math.floor (2*math.random ()) // establece A, B y C a "pequeño" si r == 0 y otras configurarlos en "Big" // usando tres técnicas diferentes // Método 1: si más var a; if (r == 0) {a = "pequeño"} else {a = "big"}; // Método 2: Operador condicional var b = r == 0? "pequeño": "grande"; // Método 3: y/o operadores var c = r == 0 && "pequeño" || "grande"; // Verifique los valores de nuestra alerta de variables (r+""+a+""+b+""+c);2. Si ... más si ... de lo contrario estructura
// establece r a 0,1,2 o 3 var r = math.floor (4*math.random ()) // establece A, B y C a "NADA", "pequeño", "grande" y "enorme" // dependiendo del valor o r usando tres técnicas diferentes // Método 1: si ... más si ... else var a; if (r == 0) {a = "nada"} else if (r == 1) {a = "pequeño"} else if (r == 2) {a = "grande"} else {a = "enorme"}; // Método 2: Operadores condicionales var b = r == 0? "Nada": r == 1? "pequeño": r == 2? "grande": "enorme"; // Método 3: y/o operadores var c = r == 0 && "nada" || r == 1 && "pequeño" || r == 2 && "grande" || "enorme"; // Verifique los valores de nuestra alerta de variables (r+""+a+""+b+""+c);3. Ejecutar la función
// establece R a 0,1,2 o 3 var r = Math.Floor (4*Math.random ()) // La variable global x y nuestras cuatro funciones var x = ""; nada = function () {x+= "nada!"}; small = function () {x+= "pequeño!"}; big = function () {x+= "big!"}; enorme = function () {x+= "enorme!"}; // llame a una función específica dependiendo del valor de r // utilizando tres técnicas diferentes // Método 1: if ... si ... si ... else if ... else if (r == 0) {nada ()} else if (r == 1) {small ()} else if (r == 2) {big ()} else {enorme ()}; // Método 2: Operadores condicionales r == 0? Nada (): r == 1? pequeño (): r == 2? Big (): enorme (); // Método 3: y/o operadores r == 0 && (nada () || true) // nada () la función no necesariamente devuelve verdadero. Para garantizar que la lógica posterior o || Los juicios no se ejecutan, se debe devolver un valor verdadero, lo mismo a continuación || r == 1 && (pequeño () || verdadero) || r == 2 && (big () || verdadero) || enorme(); // verifique los valores de nuestra alerta de variables (r+""+x);4. Ejecutar el código
// establece R a 0,1,2 o 3 var r = Math.Floor (4*Math.random ()) // La variable global x var x = ""; // Ejecución de un código diferente dependiendo del valor de r // utilizando tres técnicas diferentes // Método 1: if ... si ... si ... else if (r == 0) {x+= "nada!"} Else if (r == 1) {x+= "pequeño!"} Else if (r == 2) {x+= "big!"} Else {x+= "enorme!"}}; // Método 2: Operadores condicionales r == 0? function () {x+= "nada!"} (): r == 1? function () {x+= "pequeño!"} (): r == 2? function () {x+= "big!"} (): function () {x+= "enorme!"} (); // Método 3: y/o operadores r == 0 && (function () {x+= "nada!"} () || true) // alguien señaló en el comentario que las funciones anónimas aquí son innecesarias, y este es el caso cuando solo hay un código ejecutable, pero si hay múltiples código para ser ejecutadas, las múltiples múltiples múltiples son buenas || r == 1 && (function () {x+= "pequeño!"} () || true) || r == 2 && (function () {x+= "big!"} () || true) || function () {x+= "enorme!"} (); // verifique los valores de nuestra alerta de variables (r+""+x);En este artículo en línea, el enfoque del autor está en la escasez del código, por lo que, en general, el autor prefiere usar el operador? Los métodos deben escribir algunas letras más, lo que hace que parezca más engorroso. Al ejecutar funciones, es más conveniente usar tradicional si ... de lo contrario. En sus comentarios, algunas personas sugirieron que hacer que el código del lado del cliente sea más simple y más corto es más efectivo que mejorar una eficiencia de ejecución discreta, lo que también es correcto en algunos programas. Por lo tanto, puede ser más importante elegir una forma más concisa para procesar declaraciones condicionales desde una perspectiva formal que la eficiencia operativa de estas declaraciones mismas, sin mencionar que la eficiencia operativa variará de UA a UA.
En el juicio de que solo hay dos condiciones, que usan si ... else o ?: son bastante sencillos, mientras que los métodos de operación de && y || son un poco complicados. Pero de hecho, siempre que comprenda los siguientes dos principios básicos, todos los problemas se resolverán:
Primero, al usar la lógica y && y lógica o || Operadores, la dirección es de izquierda a derecha. El && se detiene cuando el primer valor es falso (o valor que se puede convertir en falso, como nulo/indefinido/0/""/nan, etc.), y se detiene cuando el primer valor es verdadero (o valor que se puede convertir en verdadero); El valor devuelto por toda la condición es el valor de la última condición detectada, no necesariamente verdadero/falso.
En segundo lugar, la lógica tiene mayor prioridad que el operador && que el lógico u operador.
De acuerdo con el primer principio, r == 0 y "pequeño" se calculan para la izquierda a la derecha. Si r == 0 es verdadero, se detectará "pequeño". "pequeño" es una cadena no vacía, por lo que C se tomará como "pequeño"; Si r == 0 es falso, la segunda condición de detección "grande" de lógica o || se inicia directamente. Del mismo modo, C debe tomarse como "grande". Según el segundo principio, no hay necesidad de agregar soportes durante la operación de la variable C en el código anterior.
Desde que usé el ?: y &&, || Los operadores pueden desempeñar un papel en la simplificación del código en un determinado programa, es muy importante en el código fuente de la biblioteca como JQuery. En resumen, este tipo de operador tiene dos aplicaciones principales: una es asignar o devolver valores, y el otro es ejecutar código (por ahora, clasificarlo).
Los usos de asignación están en todas partes en jQuery u otras bibliotecas. Una aplicación clásica es implementar la función de los valores predeterminados para las interfaces. Podemos escribir fácilmente dicho código, como:
var myobj = function (opciones) {var color = options.color || this.defaults.defaults; var en segundo plano Color = options.backgroundcolor || this.defaults.backgroundcolor;}; myobj.prototype.defaults = {color: "#393939", backgroundColor: "#222"} var myins = new myobj ({color: "#80ff80"}); console.log ("color:"+myins.color+", backgroundcolor:" my myinsgrounds);Si funciona?: O && y ||, ya que no tienen la función de bloque de código innato de if ... else (envuelto con {} número), solo pueden ejecutar código de una sola línea, como:
(xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200)? alerta ("¡éxito!"): alerta ("¡FALLA!");Entonces, si hay múltiples códigos que deben ejecutarse, se deben usar funciones anónimas. como:
(xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200)? function () {alerta ("éxito!"); var a = 100; alerta (a);}: alerta ("FALLA!");Hay demasiadas abreviaturas en el código fuente JQuery 1.7.1, como la línea 2643:
// gancho para atributos booleanosboolhook = {get: function (elem, name) {// alinee los atributos booleanos con las propiedades correspondientes // retroceden a la presencia de atributos donde algunos booleanos no son compatibles con var attnode, propiedad = jQuery.prop (elem, name); propiedad de retorno === Verdadero || Propiedad de tipoF! == "boolean" && (attrnode = elem.getAttributeNode (name)) && attrnode.nodeValue! == falso? name.tolowercase (): Undefined; }, set: function () {...}}Parece que tenemos que continuar aprendiendo y resumiendo.
La oración condicional de la abreviatura de JavaScript anterior (recomendada) es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.