Un momento
Un momento
Consulta una pieza, mira un ejemplo y descubre cómo cambia entre JavaScript y Python.
33 conceptos. Abre uno para ver un ejemplo y comparar.
let declara un nombre que se puede reasignar. El nombre es elegido por ti.
let vidas = 3;
vidas = 2;No vuelvas a declarar el mismo nombre con let en el mismo bloque.
Leer documentación oficial (abre otra pestaña)Una asignación vincula un nombre con un dato, sin let ni var.
vidas = 3
vidas = 2Consultar un nombre antes de asignarlo produce NameError.
const impide reasignar el nombre. No congela el contenido de arrays u objetos.
const lista = [1];
lista.push(2);lista = [] fallaría; lista.push(2) puede modificar el array.
Leer documentación oficial (abre otra pestaña)Python no tiene una palabra reservada equivalente a const. Las mayúsculas son una convención para constantes.
LIMITE = 10La convención LIMITE no impide reasignarlo.
var declara variables con alcance de función, o del entorno global si están fuera de una función.
function ejemplo() {
var total = 2;
return total;
}Su declaración se eleva con valor inicial undefined. let y const tienen otras reglas; no los sustituyas mecánicamente.
Leer documentación oficial (abre otra pestaña)Python no usa var para asignar nombres.
total = 2La asignación es una instrucción del lenguaje, aunque no empiece con una palabra de declaración.
= evalúa la expresión de la derecha y asigna el resultado a la izquierda.
let total = 2 + 3;Para comparar igualdad estricta se usa ===.
Leer documentación oficial (abre otra pestaña)= vincula el nombre de la izquierda con el valor de la derecha.
total = 2 + 3La comparación de igualdad usa ==, no =.
console.log muestra valores en la salida del entorno. No es una palabra reservada.
console.log(2 + 3);Mostrar no equivale a devolver un resultado desde una función.
Leer documentación oficial (abre otra pestaña)print es una función incorporada que muestra valores. Por defecto termina con un salto de línea.
print(2 + 3)print devuelve None. Para entregar un dato desde tu función usa return.
Un string representa caracteres delimitados por comillas o acentos graves.
const mensaje = "Hola";El texto "12" y el número 12 tienen tipos diferentes.
Leer documentación oficial (abre otra pestaña)str es el tipo de texto de Python. También puedes llamar str(valor) para obtener su representación textual.
mensaje = "Hola"Las comillas delimitan el texto; no se imprimen como parte de él.
typeof permite observar el tipo. Enteros y decimales habituales usan number.
console.log(typeof 3.5);typeof null devuelve object por una particularidad histórica.
Leer documentación oficial (abre otra pestaña)type consulta el tipo de un valor. Python diferencia int, float, str y bool, entre otros.
print(type(3.5).__name__)El tipo pertenece al valor; no se declara con let.
JavaScript no usa int para declarar variables. Los enteros habituales son valores number.
const cantidad = 3;JavaScript también tiene BigInt para otros casos, fuera de este curso.
Leer documentación oficial (abre otra pestaña)int es el tipo incorporado de enteros. int("3") convierte un texto compatible.
cantidad = int("3")int no es una palabra reservada. int("3.5") produce ValueError.
Los números habituales con parte decimal también tienen tipo number.
const precio = 3.5;No existe una declaración float precio en JavaScript.
Leer documentación oficial (abre otra pestaña)float es el tipo incorporado de punto flotante. float("3.5") convierte ese texto.
precio = float("3.5")El punto flotante tiene precisión limitada: no representa exactamente todos los decimales.
Number y String son herramientas incorporadas para convertir valores.
const total = Number("8") + 2;Number puede producir NaN para un texto no numérico.
Leer documentación oficial (abre otra pestaña)int, float y str permiten convertir valores compatibles.
total = int("8") + 2Una conversión inválida puede causar ValueError; no cualquier texto representa un número.
true y false son valores booleanos. Se escriben en minúscula.
const listo = true;"false" es texto, no el booleano false.
Leer documentación oficial (abre otra pestaña)True y False son valores booleanos. bool permite obtener un booleano de un valor.
listo = TrueLas mayúsculas importan. true no es el literal booleano de Python.
null suele representar ausencia intencional; undefined suele indicar un valor no proporcionado.
let elegido = null;No son equivalentes al número 0 ni al texto vacío.
Leer documentación oficial (abre otra pestaña)None representa ausencia. Una función sin retorno explícito devuelve None.
elegido = NoneSe escribe con N mayúscula; no es el texto "None".
Los operadores calculan con valores. + también concatena si interviene texto.
const total = 3 * 4 + 2;* y / tienen prioridad sobre + y -. Usa paréntesis para agrupar.
Leer documentación oficial (abre otra pestaña)Los operadores producen valores. / divide, // realiza división de piso y % obtiene el resto.
total = 3 * 4 + 2No puedes sumar directamente un str y un int.
Una comparación responde con un booleano. === compara sin convertir tipos.
console.log(5 === 5);= asigna. == existe, pero convierte tipos; aquí preferimos ===.
Leer documentación oficial (abre otra pestaña)Una comparación devuelve True o False. == pregunta por igualdad.
print(5 == 5)Python no usa ===. >= incluye el límite.
if evalúa una condición y ejecuta su bloque si es verdadera.
if (edad >= 18) {
console.log("Adelante");
}Los paréntesis contienen la condición y las llaves delimitan el bloque.
Leer documentación oficial (abre otra pestaña)if evalúa una condición y ejecuta el bloque sangrado si es verdadera.
if edad >= 18:
print("Adelante")La cabecera termina con dos puntos y el cuerpo necesita sangría.
else ejecuta el otro camino cuando el if anterior no se cumple. else if añade otra condición.
if (n > 0) { console.log("Positivo"); } else { console.log("Otro"); }En una cadena se ejecuta el primer bloque que corresponde.
Leer documentación oficial (abre otra pestaña)else cubre el resto de casos; elif añade otra condición a la cadena.
if n > 0:
print("Positivo")
else:
print("Otro")else y elif se alinean con el if al que pertenecen.
&& combina con y; || con o; ! niega. Aquí trabajamos con condiciones booleanas explícitas.
const puede = tieneEntrada && edad >= 12;& y | no son sustitutos de && y ||.
Leer documentación oficial (abre otra pestaña)and combina con y; or con o; not invierte el booleano.
puede = tiene_entrada and edad >= 12Python usa estas palabras, no && ni ||.
Las llaves delimitan bloques en if, bucles y funciones. También aparecen en objetos con otro papel.
if (true) {
console.log("Dentro");
}La sangría ayuda a leer, pero las llaves delimitan el bloque.
Leer documentación oficial (abre otra pestaña)Los dos puntos abren una cabecera; la sangría delimita su cuerpo.
if True:
print("Dentro")Las llaves se usan para diccionarios, no para delimitar un if.
Un array guarda elementos en orden. length consulta su tamaño.
const datos = [2, 4];
console.log(datos.length);Un array vacío tiene longitud 0.
Leer documentación oficial (abre otra pestaña)Una lista guarda elementos en orden. len(lista) consulta su tamaño.
datos = [2, 4]
print(len(datos))Una lista vacía es válida y debe considerarse al probar funciones.
Los corchetes crean arrays o consultan una posición, según el contexto.
const datos = ["a", "b"];
console.log(datos[0]);El primer índice es 0. Consultar fuera del array devuelve undefined.
Leer documentación oficial (abre otra pestaña)Los corchetes crean listas o consultan posiciones y claves, según el contexto.
datos = ["a", "b"]
print(datos[0])El primer índice es 0. Un índice fuera de la lista produce IndexError.
Un objeto literal reúne propiedades con nombres.
const ficha = { nombre: "Sol", puntos: 7 };const no congela las propiedades del objeto.
Leer documentación oficial (abre otra pestaña)Un diccionario reúne pares clave y valor.
ficha = {"nombre": "Sol", "puntos": 7}Acceder a una clave inexistente con corchetes produce KeyError.
push añade un elemento al final de un array y devuelve el tamaño nuevo.
const lista = [1];
lista.push(2);Mutar el array no equivale a reasignar su nombre.
Leer documentación oficial (abre otra pestaña)append añade un elemento al final de una lista y devuelve None.
lista = [1]
lista.append(2)No hagas lista = lista.append(2): reemplazarías la lista por None.
for...of recorre valores de una colección iterable.
for (const n of [1, 2]) {
console.log(n);
}for...in recorre claves: no tiene el mismo comportamiento.
Leer documentación oficial (abre otra pestaña)for recorre los elementos de un iterable. range permite generar una secuencia de enteros.
for n in [1, 2]:
print(n)range(3) produce 0, 1 y 2; no incluye el límite 3.
while comprueba la condición antes de cada vuelta.
let n = 1;
while (n < 3) { n += 1; }Algo debe cambiar para que la condición deje de cumplirse.
Leer documentación oficial (abre otra pestaña)while repite su bloque mientras la condición sea verdadera.
n = 1
while n < 3:
n += 1La actualización que permite terminar debe alcanzarse dentro del bucle.
function declara una función con nombre, parámetros y cuerpo.
function doble(n) { return n * 2; }Definir no ejecuta el cuerpo. La llamada doble(3) sí lo ejecuta.
Leer documentación oficial (abre otra pestaña)def define una función. Su cuerpo está sangrado.
def doble(n):
return n * 2Después de definirla, una llamada como doble(3) ejecuta su cuerpo.
return entrega un valor y termina la llamada actual de la función.
function doble(n) { return n * 2; }Sin retorno explícito una función devuelve undefined. console.log no sustituye a return.
Leer documentación oficial (abre otra pestaña)return entrega un valor y termina la llamada actual de la función.
def doble(n):
return n * 2Sin retorno explícito la función devuelve None. print no entrega el número que muestra.
// inicia una nota hasta el final de la línea, fuera de un texto.
// La comisión se cobra una vez
const total = 10 + 2;El comentario no se ejecuta.
Leer documentación oficial (abre otra pestaña)# inicia una nota hasta el final de la línea, fuera de un texto.
# La comisión se cobra una vez
total = 10 + 2Una almohadilla dentro de comillas forma parte del texto.
Una plantilla usa acentos graves y ${expresión} para insertar un dato.
const nombre = "Sol";
console.log(`Hola, ${nombre}`);Las comillas dobles no activan ${...}.
Leer documentación oficial (abre otra pestaña)Una f-string usa f antes de las comillas y {expresión} para insertar un dato.
nombre = "Sol"
print(f"Hola, {nombre}")Sin la f, las llaves se muestran como texto literal.
El alcance determina dónde puedes consultar un nombre. let y const pertenecen al bloque en que se declaran.
function doble(n) {
const resultado = n * 2;
return resultado;
}resultado es local a la función; no se consulta directamente desde fuera.
Leer documentación oficial (abre otra pestaña)Un nombre asignado dentro de una función normalmente es local a esa llamada.
def doble(n):
resultado = n * 2
return resultadoUn if o for no crea por sí solo el mismo alcance de bloque que let en JavaScript.
Un parámetro nombra una entrada en la definición. El argumento es el valor concreto que se entrega al llamar.
function doble(n) { return n * 2; }
console.log(doble(3));Aquí n es el parámetro y 3 es el argumento.
Leer documentación oficial (abre otra pestaña)Un parámetro recibe el argumento de cada llamada. Así una función trabaja con datos diferentes.
def doble(n):
return n * 2
print(doble(3))Omitir un argumento obligatorio produce TypeError.
Una llamada usa paréntesis después de una función. Su cuerpo se ejecuta y produce un valor devuelto.
function doble(n) { return n * 2; }
const resultado = doble(4);Escribir doble sin paréntesis se refiere a la función, pero no la ejecuta.
Leer documentación oficial (abre otra pestaña)Una llamada ejecuta la función con los argumentos indicados entre paréntesis.
def doble(n):
return n * 2
resultado = doble(4)Definir la función describe su cuerpo; llamarla hace que se ejecute.
Un error de sintaxis impide interpretar el código; un error al ejecutar interrumpe un programa válido. Un error de lógica puede producir una salida equivocada sin lanzar una excepción.
const precio = 4;
const cantidad = 3;
console.log(precio * cantidad);Comprueba el requisito con datos pequeños, la salida esperada y casos de frontera.
Leer documentación oficial (abre otra pestaña)SyntaxError indica sintaxis inválida. NameError indica un nombre no definido. Una salida sin excepciones también puede incumplir lo pedido.
precio = 4
cantidad = 3
print(precio * cantidad)Lee el tipo de error y su línea; cambia una cosa y vuelve a probar.
Un acumulador guarda el resultado que se construye entre vueltas. Para sumar, se inicializa en cero antes del bucle.
let total = 0;
for (const n of [2, 3]) { total += n; }
console.log(total);Reiniciarlo dentro del bucle descarta el subtotal anterior.
Leer documentación oficial (abre otra pestaña)Un acumulador conserva el subtotal entre vueltas de un recorrido. Su valor nuevo incluye el anterior.
total = 0
for n in [2, 3]:
total += n
print(total)La inicialización y la salida final suelen quedar fuera del bloque repetido.