2012-06-07 16 views
14

Sólo quiere comprobar cuál es mejor camino para ASIGNACIÓN variable condicionalmejor manera de asignación de variable condicional

primera método

if (true) { 
    var myVariable = 'True'; 
} else { 
    var myVariable = 'False'; 
} 

segundo método

var myVariable = 'False'; 
if (true) { 
    myVariable = 'True'; 
} 

Realmente prefiero 2nd One sin ningún motivo técnico específico. ¿Qué piensan ustedes?

+0

segundo es mucho mejor –

+0

no el primer límite 'myVariable' con el alcance que se le ha asignado y no puede ser utilizado fuera de la' 'if' o la else' se le ha asignado en. – Tomaltach

Respuesta

0

Preferiría también la segunda opción, sin razones técnicas, pero por el simple hecho de leer el código, la legibilidad es muy importante en el código.

Si ve la segunda opción, desde el punto de vista del procesamiento, solo se ejecutará un solo cheque, se guardará un tiempo de procesamiento muy pequeño, por lo que solo hay un cheque en el segundo caso.

+0

una razón técnica: solo habrá una verificación de condición en el segundo –

+0

, sí, corrija, actualizaré mi publicación para que quede claro – mprabhat

1

La primera solución utiliza una sola asignación en lugar de 1,5 por término medio en el segundo fragmento de código. Por otro lado, el primer fragmento de código es menos legible ya que las personas que no están familiarizadas con JavaScript pueden no darse cuenta de que el alcance de una variable no está orientado a bloques por función; en otros lenguajes con sintaxis tipo C myVariable no sería accesible fuera de if y else bloques.

En otras palabras, ambas soluciones tienen desventajas. ¿Qué hay de operador ternario:

var myVariable = condition? 'True' : 'False'; 

o si no se preocupan por el camello de los casos (aunque entiendo que esto es sólo un ejemplo, no un código real);

var myVariable = (!!condition).toString(); 
3

Usted podría hacer un ternario, lo que es mucho más corto (y ningún maldito llaves):

var myVariable = (true) ? 'True' : 'False'; 
0

Depende del uso para mí. Si tengo un código que solo quiero ejecutar si es verdadero, pero sin un código adicional para falso, usaré el segundo. Si quiero ejecutar algún código en verdadero y diferente en falso, utilizo el primero. Todo depende del uso, pero la regla general para mí es escribir una vez. Mantenerlo limpio, que sea sencillo y que sea breve

+0

¿Cree que el segundo es lógicamente correcto? – RaviTeja

51

prueba este

var myVariable = (true condition) ? "true" : "false" 
+0

+1. Me encanta de esa manera, y es la forma en que uso. Alguien me dijo que no es legible pero, maldita sea, es muy compacto (y todavía legible, imo) – DonCallisto

+1

¿Es esto diferente de la primera manera? ¿No es lo mismo con una sintaxis diferente? –

+0

@Andy lógicamente no ... pero aún mejor ... –

4

tercer camino cuando se está almacenando única verdadera falsa en variabel a continuación, utilizar

var myVariable =(condition_written_in_if); 
5

Hay dos métodos I Sabes que puedes declarar el valor de una variable por condiciones.

Método 1: Si la condición se evalúa como verdadera, el valor en el lado izquierdo de la columna se asignaría a la variable. Si la condición se evalúa como falsa, la condición de la derecha se asignará a la variable. También puede anidar muchas condiciones en una sola declaración.

var a = (true)? "true" : "false"; 

ejemplo de anidamiento del método 1: cambio de variable Un valor de 0, 1, 2 y un valor negativo para ver cómo la declaración produciría el resultado.

var a = 1; 
var b = a > 0? (a === 1? "A is 1" : "A is not 1") : (a === 0? "A is zero" : "A is negative"); 

Método 2: En este método, si el valor de la izquierda de || es igual a cero, falso, nulo, indefinido o una cadena vacía, luego el valor de la derecha se asignará a la variable. Si el valor a la izquierda de || no es igual a cero, falso, nulo indefinido o una cadena vacía, entonces el valor de la izquierda se asignará a la variable.

Aunque el valor de la izquierda puede ser un valor indefinido para que JS evalúe la condición, pero la variable debe declararse de lo contrario se producirá una excepción.

var a = 0; 
var b = a || "Another value"; 
Cuestiones relacionadas