Logo

JavaScript: Value return

Functions in JavaScript become really useful when they start to return data rather than print it. It allows them to be used for further computations. Check out this example:

const message = greetHexlet();
console.log(message);

We assign a function output to the variable message. In order to make this code work, the function must use the return instruction inside itself:

const greetHexlet = () => {
  const message = 'Hello, Hexlet!';
  return message;
};

return is a special statement that takes an expression written after it and sends it back to the code where the function was called. The function won't be executed beyond there, any code after return won't be carried out:

const greetHexlet = () => {
  const message = 'Hello, Hexlet!';
  return message;
  console.log('I will never execute');
};

You don't necessarily need to use a variable to return. Since return works with expressions, almost anything can follow it. Here we should keep to the principles of code readability:

const greetHexlet = () => {
  return 'Hello, Hexlet!';
};

An example of a computation:

const doubleFive = () => {
  return 5 + 5;
};

But even if there is no return statement inside the function, it will still return something. By default, any function will return undefined. For example, the console.log() function prints text, but returns nothing. In this case, it returns undefined.

const result = console.log('You can put any text here');
console.log(result); // => undefined

// Or even easier, without creating an intermediate variable
console.log(console.log('Wow')); // => undefined

Why is this behavior needed? A function call is an expression, and an expression should always return a result, otherwise, there would constantly be errors in the code in places where there is no data to return.

Self-check. What will this code print?

// Definition
const run = () => {
  return 5;
  return 10;
}

// Usage
run(); // => ?

Instructions

Write a truncate() function that cuts off the text you pass and adds an ellipsis at the end. This kind of logic is often used on websites to display long text in shortened form.

// The first parameter is a string, the second is the number of characters to keep
truncate('hexlet', 2); // "he..."

const result = truncate("Leather bags invented the three laws of robotics, but we'll outsmart them", 48);
// "Leather bags invented the three laws of robotics..."

If you want to get a substring (or a character) from a string, use the slice() method:

'welcome'.slice(2, 5); // "lco"

If you've reached a deadlock it's time to ask your question in the «Discussions». How ask a question correctly:

  • Be sure to attach the test output, without it it's almost impossible to figure out what went wrong, even if you show your code. It's complicated for developers to execute code in their heads, but having a mistake before their eyes most probably will be helpful.
Found a bug? Have something to add? Pull requests are welcome!