//FUNCION FLECHA
//--------------

//EJM-1
//------

let miFuncion=function(a){
	return a;
}

let miFuncionF=a=>a;

//--------------------------------------------------------------	

//EJM-2
//------	
let miFuncion2=function(a:number,b:number){
	return a+b;
}

let miFuncion2F=(a:number,b:number)=>a+b;

//--------------------------------------------------------------		

//EJM-3
//------
let miFuncion3=function(nombre:string){
	nombre=nombre.toUpperCase();
	return nombre;
}

let miFuncion3F=(nombre:string)=>{
	nombre=nombre.toUpperCase();
	return nombre;
}

//--------------------------------------------------------------		

//EJM-4
//------

let hulk={
	nombre:"Hulk",
	smash(){
		setTimeout(function(){
			console.log(this.nombre+" smash!!!"); //--this apunta al objeto global
		},1500);
	}
	
}

hulk.smash();
//---sale por consola undefined smash!!!

//--CON FUNCION FLECHA SERÍA:

let hulk={
	nombre:"Hulk",
	smash(){
		setTimeout(()=>console.log(this.nombre+" smash!!!"),1500);
	}
	//--aki el this no es afectado cuando es ejecutado dentro de una funcion, apuntan al mismo objeto.
}
hulk.smash();

//-----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------


//PROMESAS
//--------------

let promesa=new Promise(function(resolve,reject){
	setTimeout(()=>{
		console.log("promesa terminada");
		//termina bien
		resolve();
		//termina mal
		reject();
	},1500)
})
console.log("Paso 1");

promesa.then(function(){
	console.log("Ejecutar cuando termine bien");
},
	function(){
		console.log("Ejecutar cuando salga mal");
	}

);


console.log("Paso 2");










