# Fundamentos

Veamos los fundamentos de Javascript para trabajar con Vue, React, Angual, etc.

# var vs let vs const

var edad = 10
var edad = 20
console.log(edad) // 20

let edad = 10
let edad = 20
console.log(edad) // error

// solución
let edad = 10
edad = 20
console.log(edad) // 20
var edad = 10
if(true){
    var edad = 20
    console.log(edad) // 20
}
console.log(edad) // 20

let edad = 10
    if(true){
        let edad = 20
        console.log(edad) // 20
    }
console.log(edad) // 10
const edad = 10
const edad = 20 // SyntaxError

const edad = 10
edad = 20 // Error: "edad" is read-only

const edad = 10
    if(true){
        const edad = 20
        console.log(edad) // 20
    }
console.log(edad) // 10
var edades = [10,20,30]
var edades = [10,20,30,40]
console.log(edades)

let edades = [10,20,30]
edades = [10,20,30,40]
console.log(edades)

const edades = [10,20,30]
edades = [10,20,30,40]
console.log(edades)

const edades = [10,20,30]
edades.push(40)
console.log(edades)

const persona = {
  nombre: 'juanito',
  edad: 20
}

persona.edad = 21
persona.pais = 'México'

console.log(persona)

# Funciones

function sumar (num1, num2) {
  console.log(num1 + num2)
}
sumar(10, 20)

const sumarDos = (num1, num2) => {
  console.log(num1 + num2)
}
sumarDos(10, 50)

const sumarDos = num1 => {
  console.log(num1)
}
sumarDos(10)

const sumarDos = num1 => {
  return num1
}
console.log(sumarDos(10))

const sumarDos = num1 => num1
console.log(sumarDos(10))

const sumar = (num1, num2) => {
  return 'la suma es: ' + (num1 + num2)
}
let resultado = sumar(10, 20)
console.log(resultado)

const sumar = (num1, num2) => (
  'la suma es: ' + (num1 + num2)
)
let resultado = sumar(10, 20)
console.log(resultado)

const sumar = (num1 = 10) => (
  'la suma es: ' + (num1 + 20)
)
let resultado = sumar()
console.log(resultado)

# Template String (alt + 96)

// template string
const numero = (num) => {
  return 'el numero es: ' + num 
}
const resultado = numero(10)
console.log(resultado) 

const numero = (num) => {
  return `el numero es: ${num}` 
}
const resultado = numero(10)
console.log(resultado)

const numero = (num1, num2) => {
  return `el numero es: ${num1 + num2}` 
}
const resultado = numero(10,20)
console.log(resultado)

# Objetos

// objetos
const mascota = {
  nombre: 'Tom',
  edad: 5,
  tipo: 'gato'
}
mascota.raza = 'peludo'
console.log(mascota)
console.log(mascota.raza)

# Destructuring Objects

https://wesbos.com/destructuring-objects

const mascota = {
  nombre: 'Tom',
  edad: 10,
  vivo: true,
  razas: ['peludo', 'negro']
}

console.log(mascota.razas[1])
console.log(mascota.nombre)

const nombreMascota = mascota.nombre
console.log(nombreMascota)

const {nombre} = mascota
console.log(nombre)

Prácticas:

// objetos
const web = {
  nombre: 'bluuweb',
  links: {
    enlace: 'www.bluuweb.cl'
  },
  redesSociales:{
    youtube:{
      enlace: 'youtube.com/bluuweb',
      nombre: 'bluuweb yt'
    },
    facebook:{
      enlace: 'facebook.com/bluuweb',
      nombre: 'bluuweb fb'
    }
  }
}

const enlaceYT = web.redesSociales.youtube.enlace
console.log(enlaceYT)

const {enlace, nombre} = web.redesSociales.youtube
console.log(enlace)
console.log(nombre)