Megan Paffrath

Posted on

# Simple Basic Function

Here is a simple function that takes no arguments:

``````function hello() {
console.log('Hello there stranger, how are you?');
}

hello();
``````

Here is a function that takes one argument:

``````function greet(person) {
console.log(`Hi there \${person}.`);
}

greet('Megan');
``````

We can have more than one argument as follows:

``````function greetFullName(fName, lName) {
console.log(`Hi there \${fName} \${lName}.`);
}

greetFullName('Megan', 'Paffrath');
``````

# Function Expressions

Function expressions are just another way of writing functions. They still work the same way as above:

``````const square = function(x) {
return x * x;
};

square(2); // 4
``````

# Higher Order Functions

These functions operate with/on other functions, perhaps they:

• accept other functions as arguments
• return a function

An example of a function taking another function as an argument is:

``````function callTwice(func) {
func();
func();
}

function rollDie() {
const roll = Math.floor(Math.random() * 6) + 1;
console.log(roll);
}

callTwice(rollDie);
// random number
// random number
``````

An example of a function returning a function is:

``````function makeBetweenFunc(min, max) {
return function (num) {
return num >= min && num <= max;
};
}

const isBetween = makeBetweenFunc(100, 200);
// isBetween(130); // true
// isBetween(34); // false
``````

# Methods

We can add functions as properties on objects (these are called methods).

Ex:

``````const myMath = {
PI: 3.14,
square: function (num) {
return num * num;
},
// note the 2 diff ways of defining methods
cube(num) {
return num ** 3;
},
};
``````

# This

'this' is mostly used WITHIN methods of objects. It is used to reference properties of the object.

``````const person = {
first: 'Abby',
last: 'Smith',
fullName() {
return `\${this.first} \${this.last}`;
},
};

person.fullName(); // "Abby Smith"
person.lastName = 'Elm';
person.fullName(); // "Abby Elm"
``````

Note, outside of objects, 'this' refers to the top-level window object. To see what this contains, enter `this` in the console. General functions are stored in the `this` object too:

``````// defined on its own (outside of an object)
function howdy() {
console.log('HOWDY');
}

this.howdy(); // HOWDY
``````