# data[].attributes.headline
¿Para qué sirve el uso de consola en JavaScript?

# data[].attributes.subject
¿Para qué sirve el uso de consola en JavaScript?

# data[].attributes.body
En la consolo podemos escribir funciones o sentencias de JS que estan actuando en la página. De esta forma podremos observar los resultados que nos devuelve en la consola al realizar diferentes acciones.
Los tres usos principales que le dan a la consola son: visualizar errores, revisar programas mediante mensajes en la consola y probar funciones.

# data[].attributes.body
Es una forma de elegir una variante restroingida en JS, así implícitamente se deja de lado el modo poco rigurosos. El modo estricto no es sólo un subconjunto: intencionalmente tiene diferencia semántica del cpodigo normal.
El modod estrcito tiene varios cambios en la semántica normal de JS: elimina algunos errores de JS, corrige los errores que hacen difícil para los motores de JS y prohíbe cierta cierta sintaxis.

# data[].attributes.body
Estas presentan un ámbito de bloque (block scope) tal y como lo hacen las variables definidas usando la instrucción let, el valor no puede cambiarse a través de la reasignación.
Sintaxis:

const varname1 = value1 [, varname2 = value2 [, varname3 = value3 [, ... [, varnameN = valueN]]]];

# data[].attributes.body
La instrucción let declara una variable de alcance local con ámbito de bloque (block scope), la cual, opcionalmente, puede ser inicializada con algún valor.
Te permite declarar variables limitando su alcance al bloque; tambien se inicializa a un valor sólo cuando un analizador lo evalúa.
Sintaxis:

let var1 [= valor1] [, var2 [= valor2]] [, ..., varN [= valorN]];

# data[].attributes.body
Los números se implementan en formato en coma flotante de doble precisión. El tipo "number" tiene tres valores simbpolicos: + Infinity, - Infinity y NaN. BigInt permite representar números enteros que pueden ser muy grandes; pero este no se puede mezclar y hacer coincidir los valores BigInt y Number en la misma operación, y no se puede usar el objeto Math con valores BigInt.

# data[].attributes.body
El tipo Strings se utiliza para representar datos textuales. Es un conjunto de "elementos" de valores enteros sin signo de 16 bits. Cada elemento de la cadena de caracteres ocupa una posición en la cadena. El primer elemento está en el índice 0, el siguiente en el índice, y así sucesivamente. Se pueden crear cadenas utilizando cadena literales u objetos string.
Objetos String = Es una envoltura alrededor del tipo de dato primitivo "string":

const foo = new String('foo'); // Crea un objeto String
console.log(foo);              // Muestra: [String: 'foo']
typeof foo;                    // Devuelve 'object'

Cadenas literales = Se pueden crear cadenas simples usando comillas simples o dobles:

'foo'
"bar"

# data[].attributes.body
Este tipo de datos ofrecen solamente dos valores: "true" o "false", que puede ser o prendido o apagado, o activo o inactivo, o uno o cero. Para usarlo se debe escribir el nombre de la variable y hacer la asignación que queremos, ya sea "true" o "false".

# data[].attributes.body
Para este aparatado se usa el objeto Date, este tiene gran cantidad de métodos para establecer, obtener y manipular fechas. Pero no tiene propiedades. Almacenan fechas como el número de milisegundos.
Objeto Date:

var dateObjectName = new Date([parameters]);

# data[].attributes.body
Symbol es un objeto incorporado cuyo constructor devuelve un symbol primitivo. que está garantizando que sea único. Estos se usan a menudo para añadir claves de propiedades únicas a un objeto que no sean iguales a las claves de propiedades únicas pueda añadir objeto, y que están ocultas de cualuier mecanismo que otro código utilice normalmente para acceder al objeto.

# data[].attributes.body
JSON es un objeto o un arreglo que puede contener varios objetos. Por lo tanto, objetos y arreglos son tipos de datos automáticamente aceptables en JSON. Otros tipos de datos que se admite son booleanos, nulos y cadenas de texto. JSON puede extenderse a otros tipos de datos adicionales que JSON puro no acepta.
Ejemplos: GeoJSON = representa datos geográficos. BSON = es usado por el popular proveedor de servicios de bases de datos MongoDB.

# data[].attributes.body
Toma valores numéricos como sus operandos y devuelve un solo valor numérico. Los estándar son suma, resta, división y multiplicación. Por ejemplo:

1 / 2; // 0.5
1 / 2 == 1.0 / 2.0; // Esto es true

# data[].attributes.body
Un operador relacional compara sus operadores y devuelven un valor Boolean basado en si la comparación es verdadera.

# data[].attributes.body
Se usan normalmente con valores booleanos (lógicos); cuando lo son, devuelven el valor de uno de los operadores && y l l en realidad devuelven el valor de uno de los operadores especificios, por lo que si estos operadores se usan con valores no booleanos, pueden devolver un valor booleano.

# data[].attributes.body
Este asigna un valor a su operando izquierdo basándose en el valor de su operador derecho. El operador de asignación simple es igual, que asigna el valor de su operando derecho a su operando izquierdo. Es decir, X = Y asigna el valor de Y a X.

# data[].attributes.body
Lo que hace es cambiar el signo del valor que se estará almacenado.

# data[].attributes.body
Concatena dos valores de cadena, devolviendo otra cadena que es la unión de los dos operadores de cadena.

# data[].attributes.body
Crea un bucle que consiste en tres expresiones opcionales, encerradas en paréntesis y separada por puntos y comas, seguidas de una sentencia ejecutada en un bucle.
Sintaxis:

for ([expresion-inicial]; [condicion]; [expresion-final])sentencia

# data[].attributes.body
Crea un bucle que ejecuta una sentencia especificada mientras cierta condición se evalúe como verdadera. Dicha condición es evaluada antes de ejecutar la sentencia.
Sintaxis:

while (condicion)
  sentencia

# data[].attributes.body
La setencia (do while) crea un bucle que ejecuta una sentencia especificada, hasta que la condicion de comprobación se evalúa como falsa. La condicion se evalúa después de ejecutar la sentencia, dando como resultado que la sentencia especificiada se ejcute al menos una vez.

# data[].attributes.body
Ejecuta una sentecia si una condicion específicada es evaluada como verdadera. Si la condición es evaluada como falsa, otra sentencia puede ser ejecutada.
Sintaxis:

if (condición) sentencia1 [else sentencia2]

# data[].attributes.body
La declaración swirch evalúa una espresión, comparando el valor de esta expresion con una instancia case, y ejecuta declaraciones asociadas a ese case, así como las declaraciones en los case que siguen.
Es una expresión que es comparada con el valor de cada instancia "case".
Sintaxis:

switch (expresión) {
  case valor1:
    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor1
    [break;]
  case valor2:
    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor2
    [break;]
  ...
  case valorN:
    //Declaraciones ejecutadas cuando el resultado de expresión coincide con valorN
    [break;]
  default:
    //Declaraciones ejecutadas cuando ninguno de los valores coincide con el valor de la expresión
    [break;]
}

# data[].attributes.body
Es una estructura de control usada para tomar decisiones. Esun condicional que sirve para realizar. Es una condicional que se usa para hacer unas u otras operaciones en función de una expresión, si da resultado positivo se realizan las acciones relacionadas al caso positivio.
Sintaxis:

if (expresión) {
   //acciones a realizar en caso positivo
   //...
}

# data[].attributes.body
Ejecuta una sentecia si una condicion específicada es evaluada como verdadera. Si la condición es evaluada como falsa, otra sentencia puede ser ejecutada.
Sintaxis:

if (condición) sentencia1 [else sentencia2]

# data[].attributes.body
La declaración swirch evalúa una espresión, comparando el valor de esta expresion con una instancia case, y ejecuta declaraciones asociadas a ese case, así como las declaraciones en los case que siguen.
Es una expresión que es comparada con el valor de cada instancia "case".
Sintaxis:

switch (expresión) {
  case valor1:
    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor1
    [break;]
  case valor2:
    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor2
    [break;]
  ...
  case valorN:
    //Declaraciones ejecutadas cuando el resultado de expresión coincide con valorN
    [break;]
  default:
    //Declaraciones ejecutadas cuando ninguno de los valores coincide con el valor de la expresión
    [break;]
}

# data[].attributes.body
Las funciones se definen mediante la palabra reservada fuction, seguida del nombre de la función. Su estructura es:

function square(number) {
  return number * number;
}

function nombre_funcion() {
  ...
}

# data[].attributes.body
Estos parametros pueden ser:
a). Valores simples a los que se denomina literales. Ejemplo: 554, true ó "aldea"
b). Variables que contiene un número, un texto o un valor booleano
c). Objetos de naturaleza compleja, como arrays y otros tipos de obejtos que veremos más adelante.

# data[].attributes.body
Funciona como una variable local a la función: si el parámetro sufre cambios, estos sólo son conocidos dentro de la función.

# data[].attributes.body
Este nos permite representar un número indefinido de argumentos como un array. Sólo son aquellos a los que no se les ha asignado un nombre.
Sintaxis:

function(a, b, ...theArgs) {
  // ...
}

# data[].attributes.body
Aseguran que una función no se va a ejecutar antes de que se complete una tarea, sino que se ejecutará justo después de que la tarea se haya completado. Ayuda a desarrollar código JS asíncrono y mantener a salvo de problemas y errores.

# data[].attributes.body
Es una alternativa compacta a una expresión de función tradicional, pero es limitada y no se puede usar en todas las situaciones.

# data[].attributes.headline
¿Qué es el DOM y como se manipula EL DOM?

# data[].attributes.subject
¿Qué es el DOM y como se manipula EL DOM?

# data[].attributes.body
El Modelo de Objetos del Documento (DOM) permite ver el mismo documento de otra manera, describiendo el contenido del documento como un conjunto de objetos que un programa Javascript puede actuar sobre ellos.
El DOM permite un acceso a la estructura de una página HTML mediante el mapeo de los elementos de esta página en un árbol de nodos. Cada elemento se convierte en un nodo y cada porción de texto en un nodo de texto.
Ejemplo:

// Para crear elementos llamamos a createElement con el nombre del elemento
var nuevoH1 = document.createElement('h1');
var nuevoParrafo = document.createElement('p');

// Crear nodos de texto para un elemento
var textoH1 = document.createTextNode('Hola mundo!');
var textoParrafo = document.createTextNode('lorem ipsum...');

// Añadir el texto a los elementos
nuevoH1.appendChild(textoH1);
nuevoParrafo.appendChild(textoParrafo);

// también podemos asignar directamente el valor a la propiedad innerHTML
nuevoH1.innerHTML = textoH1
nuevoParrafo.innerHTML = textoParrafo

// los elementos estarían listos para añadirlos al DOM, ahora mismo solo existen en memoria, pero no serán visibles hasta que no los añadamos a un elemento del DOM