---
# System prepended metadata

title: function Define methods

---

# function Define methods


// function without arguments

function sum() {
    // code
}

const sum = () => {
    // code
}

const sum = _ => {
    // code multi line
}

const sum = _ => { /* single line */}

const sum = _ => console.log("single")

// function with arguments

function sum(a, b) {
    return a + b;
}

const sum = (a, b) => {
    return a + b;
}

const sum = (a, b) => a + b;


// function arguments with default Value, ES6

const sum = (a, b = 10) => a + b;

sum(10, 20) // 30
sum(20) 	// 30


// void function | non return
function print() {
    console.log("print");
}

print()

// return function
function print() {
    return "My console";
}

console.log(print());

function sum(a, b) {
    // code
    // code
    // code
    return a + b; // Number final result
    return "stringsdf" // string
    return true|false // Boolean
    return [1,2 3,] // array
    return {
   	 // object
    }
}

sum(5, 5) // 10;

// Object function
const Car = {
    color: "blue",
    move: function() {

    }
}
// object function shorthand
const Car = {
    color: "blue",
    move() {

    }
}

// closure function
function increment() {
    let start = 0;

    return function() {
   	 return start++;
    }
}

const store = increment();
store() // 0
store() // 1

// recursion
// !5 => 5+4+3+2+1
// !10=> 10+9+.....+1
function Factorial(n) {
	if (n === 0) {  
    	return 1;  
	}
	 
	return n * Factorial( n - 1 );
}

function sum(a){
  return function(b) {
    return function(c) {
       return a + b + c;
    }
  }
}

sum(10)(20)(30) // 60

sum(10)
  => function(b) {
    return function(c) {
       return a + b + c;
    }
  }

sum(10)(20)
  => function(c) {
       return a + b + c;
    }
sum(10)(20)(30) 
   => a + b + c = 60
map, filter, reduce

map=
 callback(element, index, array)

const num = [1, 2, 3, 4];

// Array = [1, 2, 3, 4];
// Element 1, 2, 3, 4
// Index   0, 1, 2, 3

const num2 = num.map((item) => {
  return item * 2
})
const num2 = num.map(item => item * 2)
// [2, 4, 6, 8];

function map(array, callback) {
  const newArray = [];
  for (let i = 0; i < array.length; i++) {
     newArray = callback(array[i])
  }
  return newArray;
}

