The different types of JavaScript functions explained