The browser storage localStorage is not available. Either your browser does not support it or you have disabled it or the maximum memory size is exceeded. Without localStorage your solutions will not be stored.


Up to now we had always initialized variables at declaration.
// declaration and initialization
var x = 1;
However, you can also declare a variable and initialize it later.
var x; // declaration
x = 1; // initialization
Variables that were not initialized have the value undefined.

Uninitialized variables can also occur on function calls. If you call a function with a parameter without an argument, the parameter gets the value undefined:
var echo = function(x) {
  return x;

// function call without argument
var y = echo();
echo is called without any argument. The parameter x receives the value undefined. Since echo simply returns it's parameter, y also gets the value undefined.

A function that expects a parameter can be called without an argument. When writing functions, you should always consider what should happen in this case. It is good practice in such a case to assign a default value to the parameter. We had seen this with the string method charAt(index). Normally this method returns the character at position index. If we call charAt without an argument, index gets the default 0. The character at position 0 is returned.

To check for undefined, use strict equality. Therefore, charAt could contain the following code snippet:
if (index === undefined) {
  index = 0;


Write a function hello having one parameter and returning 'Hello <parameter>!'. The call hello('Nala') should return 'Hello Nala!'. If hello is called without an argument, 'Hello world!' should be returned.