04. Estructuras de Control - cejaramillof/javaScript Wiki

Estructuras de Control de Flujo

Las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Si se utilizan estructuras de control de flujo, los programas dejan de ser una sucesión lineal de instrucciones para convertirse en programas inteligentes que pueden tomar decisiones en función del valor de las variables.

Comparaciones

Si comparara objetos fallaría porque compararía la posición en memoria.

Estricta: (Recomendada)

Compara tipo y valor, se hace con 3 iguales (===)

Abstracta: Conversión de tipos

Compara convirtiendo ambos valores (Conversión de tipos), se hace con 2 iguales (==)

Para las comparaciones abstractas relacionales (<=), Primero se convierten en primitivos, y luego en el mismo tipo, antes de la comparación.

Condicionales (if)

if (condición) {
    código a ejecutar, si se cumple la condición
} else if (segundaCondición) {
    código a ejecutar, si se cumple la condición
} else {
    código a ejecutar, cuando no se cumple ninguna condición
}

Condicional múltiple: (switch)

switch(// variable a comparar){
    case 'case2':
        console.log('execute when case2');
        break;
    case 'caso1':
    case 'casoUno':
        console.log('execute when case1 or caseUno');
        break;
    default:
        break;
}

Ciclos - Bucles (Estructuras repetitivas)

For

/* inicial; condición; incremento */
for (var i = 1; i <= 365; i++) {
    // código a repetir
}

For Of

Could be used in any iterable object (array, string, map, set, arguments, nodeList, etc). in each step return a value

var array = [2, 3, 4];
for (const number of array) {
  // not has index, for position, return the current element
  console.log(number);
}

function greetingsAll() {
  for(name of arguments) {
    console.log(`Hi ${name}`);
  }
}

greetingsAll('Carlos', 'Tyrone', 'Admin');

For in

Iterate over iterable properties (doesn't show proto), instead of values. Any object typed, doesn't restricted to iterables.

// for enumerable properties
var obj = {a: 1, b: 2, c: 3};
for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}
var days = ["L", "M", "W", "J", "V", "S", "D"];
for (index in days) {
  console.info(days[index]);
}
// for loop in iterable objs like nodelist, and whatever is best way use (of)
for (day of days) {
  console.info(day);
}

While

// condición
while (persona.peso > META) {
    //  código a repetir, mientras se cumpla la condición
}

Do While

do {
    // Minimo se repite 1 vez, antes de verificar la condición
    // código a repetir, mientras se cumpla la condición
} while(persona.peso > Meta)
// condición

Break

Esta declaración "salta-sale" de un bucle.

for (i = 0; i < 10; i++) {
  if (i === 3) { break; }
  text += "The number is " + i + "<br>";
}

Continue

Esta declaración "salta sobre" una iteración en el bucle.

for (i = 0; i < 10; i++) {
  if (i === 3) { continue; }
  text += "The number is " + i + "<br>";
}