Resuelva problemas comunes en su código JavaScript
==================================================

Los siguientes enlaces apuntan a soluciones a problemas comunes de todos los días que deberá solucionar para que su código JavaScript se ejecute correctamente..

Errores comunes de principiante
-------------------------------

### Correcta ortografía y casing

Si su código no funciona y / o el navegador se queja de que algo no está definido, verifique que haya escrito todos sus nombres de variables, nombres de funciones, etc. correctamente.

Algunas funciones comunes del navegador incorporado que causan problemas son:

| Correcto | Incorrecto |
| --- | --- |
| `getElementsByTagName()` | `getElementbyTagName()` |
| `getElementsByName()` | `getElementByName()` |
| `getElementsByClassName()` | `getElementByClassName()` |
| `getElementById()` | `getElementsById()` |

### Posición de punto y coma

Debes estar seguro de no colocar ningún punto y coma incorrectamente. Por ejemplo:

| Correcto | Incorrecto |
| --- | --- |
| `elem.style.color = 'red';` | `elem.style.color = 'red;'` |

### Funciones

Hay una serie de cosas que pueden salir mal con la funciones.

Uno de los errores más comunes es declarar una función, pero no llamarla a ninguna parte, Por ejemplo:


```js
function miFuncion() {
  alert("Esta es mi funcion.");
}
```


Este código no hará nada a menos que lo llame, por ejemplo con


```js
miFuncion();
```


#### Alcance de la función

Recuerda que las funciones tienen su propio alcance (en-US) — no puedes acceder a un valor de variable establecido dentro de una función desde fuera de la función, a menos que haya declarado la variable globalmente (es decir, no dentro de ninguna función), o retornar el valor fuera de la función.

#### Ejecución de código después de una declaración de retorno (Return)

Recuerde también que cuando devuelve un valor de una función, el intérprete de JavaScript sale de la función — ningún código declarado después de que se ejecute la declaración de devolución (Return).

De hecho, algunos navegadores (como Firefox) le darán un mensaje de error en la consola del desarrollador si tiene código después de una declaración de devolución. Firefox te ofrece "código inalcanzable después de la declaración de devolución".

Mas abajo podemos observar una función de saludo, posterior a retornar intentamos asignar a la variable x, el valor de la propiedad que viene en la función. Esto nunca ocurrira ya que posterior a retornar un valor se sale del contexto función. En pocas palabras jamas ocurrira la asignación.

Ejemplo de una declaración posterior a una declaración de retorno:
```

function saludo(nombre){
 return "Hola, " + nombre + " que bueno que volviste";
 var x = nombre; //Esta linea jamas se ejecutara ya que viene despues de un retorno
}
```

### Notación de objetos versus asignación normal

Cuando asigna algo normalmente en JavaScript, utiliza un solo signo igual, por ejemplo:


```js
const miNumero = 0;
```


Esto no funciona en los Objetos, sin embargo, con los objetos, debe separar los nombres de los miembros de sus valores mediante dos puntos y separar cada miembro con una coma, por ejemplo:


```js
const miObjeto = {
  nombre: "Felipe",
  edad: 27,
};
```

Definiciones básicas
--------------------

* ¿Qué es JavaScript?
* ¿Qué es una variable?
* ¿Qué son los Strings?
* ¿Qué es una matriz?
* ¿Qué es un bucle?

* ¿Qué es una función? (en-US)
* ¿Qué es un evento?
* ¿Qué es un objeto?
* ¿Qué es JSON?
* ¿Qué es una API web?
* ¿Qué es el DOM? (en-US)
Casos de uso básico
-------------------

### General

* ¿Cómo agrega JavaScript a su página?
* ¿Cómo agrega comentarios al código JavaScript?
### Variables

* ¿Cómo se declara una variable?
* ¿Cómo se inicializa una variable con un valor?
* ¿Cómo se actualiza el valor de una variable? (ver también Operadores de asignación)
* ¿Qué tipos de datos pueden tener los valores en JavaScript?
* ¿Qué significa 'tipeado libremente' (loosely typed)?
### Matemáticas (MATH)

* ¿Con qué tipos de números tiene que lidiar en el desarrollo web?
* ¿Cómo haces matemáticas básicas en JavaScript?
* ¿Qué es la precedencia del operador y cómo se maneja en JavaScript?
* ¿Cómo se incrementan y disminuyen los valores en JavaScript?
* ¿Cómo se comparan los valores en JavaScript? (por ejemplo, para ver cuál es más grande o para ver si un valor es igual a otro).
### Cadenas de texto (Strings)

* ¿Cómo se crea una cadena de texto en JavaScript?
* ¿Tienes que usar comillas simples o comillas dobles?
* How do you escape characters in strings?
* ¿Cómo se unen las cadenas de texto?
* ¿Puedes unir cadenas de texto y números juntos?
* ¿Cómo encuentras la longitud de una cadena de texto (String)?
* ¿Cómo encuentras qué carácter está en una posición determinada en una cadena de texto?
* ¿Cómo encontrar y extraer una subcadena específica de una cadena de texto?
* ¿Cómo se cambia el caso de una cadena de texto?
* ¿Cómo se reemplaza una subcadena específica por otra?
### Matrices (Arrays)

* ¿Cómo se crea una matriz?
* ¿Cómo accede y modifica los elementos en una matriz? (esto incluye matrices multidimensionales)
* ¿Cómo encuentras la longitud de una matriz?
* ¿Cómo agrega y elimina elementos de la matriz?
* ¿Cómo se divide una cadena en elementos de la matriz, o se unen los elementos de la matriz en una cadena?
### Depuración de JavaScript

* ¿Cuáles son los tipos básicos de error?
* ¿Qué son las herramientas de desarrollo del navegador y cómo se accede a ellas?
* ¿Cómo se registra un valor en la consola de JavaScript? (en-US)
* ¿Cómo se usan los puntos de interrupción y otras funciones de depuración de JavaScript? (en-US)

Para obtener más información sobre la depuración de JavaScript, consulte Manejo de problemas comunes de JavaScript (en-US); Consulte también Otros errores comunes para obtener una descripción de los errores comunes.

### Tomar decisiones en el código

* ¿Cómo ejecuta diferentes bloques de código, dependiendo del valor de una variable u otra condición?
* ¿Cómo se usan las declaraciones if ... else?
* ¿Cómo anidan un bloque de decisión dentro de otro?
* ¿Cómo se usan los operadores AND, OR y NOT en JavaScript?
* ¿Cómo maneja convenientemente una gran cantidad de opciones para una condición?
* ¿Cómo utiliza un operador ternario para hacer una elección rápida entre dos opciones basadas en una prueba verdadera o falsa?
### Bucle / Iteración

* ¿Cómo ejecutas el mismo código una y otra vez?
* ¿Cómo sale de un bucle antes del final si se cumple una determinada condición?
* ¿Cómo saltas a la siguiente iteración de un ciclo si se cumple una determinada condición?
* ¿Cómo usas while y do ... while loops?
* Cómo iterar sobre los elementos en una matriz
* Cómo iterar sobre los elementos en una matriz multidimensional
* Cómo iterar sobre los miembros en un objeto
* Cómo iterar sobre los miembros de un objeto anidado dentro de una matriz
Casos de uso intermedio
-----------------------

### Funciones

* ¿Cómo encuentras funciones en el navegador? (en-US)
* ¿Cuál es la diferencia entre una función y un método? (en-US)
* ¿Cómo creas tus propias funciones?
* ¿Cómo ejecuta (llama o invoca) una función? (en-US)
* ¿Qué es una función anónima? (en-US)
* ¿Cómo se especifican los parámetros (o argumentos) al invocar una función? (en-US)
* ¿Qué es el alcance de la función? (en-US)
* ¿Qué son los valores de retorno y cómo los usa?
### Objetos

* ¿Cómo se crea un objeto?
* ¿Qué es la notación de puntos?
* ¿Qué es la notación de corchetes?
* ¿Cómo se obtienen y establecen los métodos y propiedades de un objeto?
* ¿Qué es `this`, en el contexto de un objeto?
* ¿Qué es la programación orientada a objetos?
* ¿Qué son los constructores y las instancias y cómo se crean?
* ¿Qué formas diferentes hay para crear objetos en JavaScript?
### JSON

* ¿Cómo estructuran los datos JSON y los leen desde JavaScript?
* ¿Cómo se puede cargar un archivo JSON en una página?
* ¿Cómo convierte un objeto JSON en una cadena de texto y viceversa?
### Eventos

* ¿Qué son los controladores de eventos y cómo los usa?
* ¿Qué son los controladores de eventos en línea?
* ¿Qué hace la función `addEventListener()` y cómo la usa?
* ¿Qué mecanismo debo usar para agregar código de evento a mis páginas web?
* ¿Qué son los objetos de evento y cómo los usa?
* ¿Cómo se previene el comportamiento de evento predeterminado?
* ¿Cómo se disparan los eventos en elementos anidados? (propagación de eventos, también relacionada - burbujeo y captura de eventos)
* ¿Qué es la delegación de eventos y cómo funciona?
### JavaScript Orientado a Objetos

* ¿Qué son los prototipos de objetos?
* ¿Cuál es la propiedad del constructor y cómo puede usarla?
* ¿Cómo se agregan métodos al constructor?
* ¿Cómo se crea un nuevo constructor que herede sus miembros de un constructor principal?
* ¿Cuándo deberías usar la herencia en JavaScript?
### Web APIs

* ¿Cómo se manipula el DOM (por ejemplo, agregar o eliminar elementos) usando JavaScript? (en-US)