Register to get access to free programming courses with interactive exercises

Chaining methods JavaScript fundamentals

Numbers have a method that converts them to a string:

const peopleCount = 5;
peopleCount.toString(); // '5'

Will the following code work, and if so, what will it print?

const name = 'Tirion';
console.log(name.length.toString());

It's the first time we've seen several consecutive periods, but all of the above operations here are familiar. Everything happening in this code is a mix of language features we already know. This happens quite often in programming. Even if you don't know the syntax, you can try combining different approaches, and there's a good chance it'll work.

The easiest way to understand how this code works is to break the chain into separate operations:

const name = 'Tirion';
const len = name.length;
console.log(len.toString());

These examples all do the same thing. We can perform operations sequentially, creating constants in between, or build a continuous chain of properties and methods. Computations in chains always go from left to right.

One more example:

const name = 'Tirion';
console.log(name.toUpperCase().toLowerCase());

You'll need a bit of mental effort for this code. It's important to understand that .toLowerCase() is applied to the result of the .toUpperCase() function. And toUpperCase() returns a string. Rookies often make mistakes with chains of methods; they forget to call them:

const name = 'Tirion';
// This code will work incorrectly.
console.log(name.toUpperCase.toLowerCase());

Following this idea, it's possible to build infinitely long (though, in this case, useless) chains:

// What is the result of this call?
console.log(name.toUpperCase().toLowerCase().length.toString().length);

_This trick won't work with functions because they are usually nested, f(f(f())), which complicates analysis. Yet this doesn't mean that you can't do it nicely - you can and should. Other languages implement it by composing functions or using a pipeline operator, which, incidentally, is starting to be used more and more in JavaScript: https://github.com/tc39/proposal-pipeline-operator.

Sign up

Programming courses for beginners and experienced developers. Start training for free

  • 130 courses, 2000+ hours of theory
  • 1000 practical tasks in a browser
  • 360 000 students
By sending this form, you agree to our Personal Policy and Service Conditions

Our graduates work in companies:

Bookmate
Health Samurai
Dualboot
ABBYY