¿Qué es ECMAScript?

ECMAScript es la especificación del lenguaje propuestro por ECMA Internacional que es una institucíon encargada de los estándares, y JavaScript es el lenguaje de programación que utiliza esta especificación para trabajar sobre estas características que van siendo añadidas año con año desde el 2015.

JavaScript nace de la propuesta de NETSCAPE en 1996 y apartir de ahí se han ido añadiendo nuevas versiones teniendo desde la primer propuesta a volverse una especificación pasada por ECMA a lo que hoy en día es cada una de estas versiones: ES6, ES7

Cada junio de cada año, y esto es mediante una propuesta, y un comité encargado de revisar estas características que se añadirán al lenguaje.


Default Params y Concatenación

// Default Params y Concatenación
    // Parámetros por defecto
        // Antes de EC6
function newFunction(name, age, country){
    var name = name ||'Oscar';
    var age = age || 32;
    var country = country || 'MX';
    console.log(name, age, country);
}

        // Después de ES6
function newFunction2(name = 'oscar', age  = 32, country = 'MX'){
    console.log(name, age, country);
}

        /* Se pueden llamar de dos formas, dejándolas vacías para que deje el nombre 
					 por defecto, o asignándole lo valores que queramos */

newFunction2();
newFunction2('Brandon', 18, 'MX');

    // Concatenación antes de EC6
let hello = 'Hello';
let world = 'world';
let epicPhrase = hello + ' ' + world;
console.log(epicPhrase);
    // Templates Literales
        // Comillas francesas ``
        // Se ponen con Atl Gr + }
let epicPhrase2 = `${hello} ${world}`
console.log(epicPhrase2);


LET y CONST, Multilínea, Spread Operator y Desestructuración

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6ebe7df8-4ac8-4088-bf92-b51e2aff66b9/Untitled.png

// LET y CONST, Multilínea, Spread Operator y Desestructuración
    // Antes de EC6
let lorem = 'Nunca \\n' + 'pares de \\n' + 'aprender.'; 
    // Después de EC6
let lorem2 = `Otra frase épica que necesitamos
ahora es otra frase épica
`;
console.log(lorem, lorem2);

    // Desestructuración de un objeto de JavaScript
let person = {
    'name': 'Brandon',
    'age': 18,
    'country': 'MX'
}

        // Antes de EC6
console.log(person.name, person.age, person.country);

        // Después de EC6
let {name, age, country} = person;
console.log(name,age,country);

    // Spread Operator
let team1 = ['Brandon', 'Juan', 'Karen', 'Angel'];
let team2 = ['Omar', 'Jose', 'Viviana', 'Goretti'];

let education = ['David', ...team1, ...team2];

console.log(education);

		/* Var es global y let solo vive dentro del bloque en el que fue declarado
		 y entra en la llamada (TDZ) Temporal Dead Zone */
{var global = 'Global var';}
{let globallet = 'Global let';console.log(globallet);}
console.log(global);
  1. var Declara una variable de scope global o local para la función, sin importar el ámbito de bloque. Permite Hoisting.
  2. let Declara una variable de scope global, local para la función o de bloque. Es reasignable y no permite Hoisting.
  3. const Declara una variable de scope global, local para la función o de bloque. No es reasignable, pero es mutable. No permite hoisting.