DEV Community

Megan Paffrath
Megan Paffrath

Posted on

JavaScript: Functions, Function Expressions, Objects, Methods, and this

Simple Basic Function

Here is a simple function that takes no arguments:

function hello() { console.log('Hello there stranger, how are you?'); } hello(); 
Enter fullscreen mode Exit fullscreen mode

Here is a function that takes one argument:

function greet(person) { console.log(`Hi there ${person}.`); } greet('Megan'); 
Enter fullscreen mode Exit fullscreen mode

We can have more than one argument as follows:

function greetFullName(fName, lName) { console.log(`Hi there ${fName} ${lName}.`); } greetFullName('Megan', 'Paffrath'); 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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; }, }; 
Enter fullscreen mode Exit fullscreen mode

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" 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)