Functions JS Home << JS Intermediate << Functions
Javascript functions are small subprograms which can be called by external code, or recursively by the function itself. This lesson is all about functions, which consist of a function body, can accept parameters and can also return a value to the calling code.
Functions are created using the global object constructor Function, via declaration using the function statement,
or by function expression using the function special operator.
All functions are Function objects underneath the covers, but as mentioned above there are different ways to set up the function creation. We will look at each way
of creating functions as we work through the lesson and also give the pros and cons of using a certain method of function creation.
Values are passed back to the calling code using the return statement. If no return statement is
passed back from a function, the function undefined.
Function Creation Using The Function Constructor
The Function constructor allows us to create a Function object.
Function objects created this way are less efficient as they are parsed on function creation as opposed to being parsed with the rest of The JavaScript code.
Below is an example of using the Function constructor.
*/
/ Create a Function that takes an argument and
/ returns the square of the argument.
/*
var newFunction = new Function('a', 'return a * a');
alert(newFunction(6));
alert(newFunction(12));
Function Creation Using The function Statement
The function statement allows us to create a function declaration using a statement.
Function objects created this way are parsed with the rest of The JavaScript code and so are more efficient than functions created using the constructor creation method.
Below is an example of using the function statement.
*/
/ Create a function statement that takes an argument and
/ returns the square of the argument.
/*
function squareNumber(a) {
return a * a;
}
alert(squareNumber(9));
alert(squareNumber(13));
Function Creation Using The function Special Operator
The function special operator allows us to create a Function object using an expression. The
function expression can have a name or be an anonymous function.
Function objects created this way are parsed with the rest of The JavaScript code and so are more efficient than functions created using the constructor creation method.
Below are examples of using the function special operator.
*/
/ Create a function operator that takes an argument and
/ returns the square of the argument.
/*
var squareResult = function(a) {
return a * a;
};
alert(squareResult(7) + ' Anonymous function expression');
alert(squareResult(15) + ' Anonymous function expression');
*/
/ Create a named function expression that takes an argument and
/ returns the square of the argument.
/*
var squareResult2 = function getSquare(a) {
return a * a;
};
alert(squareResult2(6) + ' Named function expression getSquare{}');
alert(getSquare(17) + ' Named function expression getSquare{}');
Function Chaining
The Function object also has a couple of handy methods that allow us to use some prototyping of another function as part of the current function. The first method is the
apply() method which calls a function with a given this value and arguments provided as an array.
The second method is the call() method which calls a function with a given this value and
arguments provided individually. Apart from this the methods are the same, so we will look at the apply() method here.
Below is an example of using the apply() method for chaining.
function Country(name, capital) {
this.name = name;
this.capital = capital;
return this;
}
function County(name, capital, county) {
Country.apply(this, arguments);
this.county = county;
}
County.prototype = new Country();
// Define custom override function for County toString().
County.prototype.toString = function CountyToString() {
var county = this.name + ' ' + this.capital + ' ' + this.county;
return county;
}
var essex = new County('England', 'London', 'Essex');
alert(essex.toString());
alert(essex.constructor);
Lesson 8 Complete
In this lesson we looked at functions and the various ways to create them.
Related Tutorials
JavaScript Advanced Tutorials - Lesson 8 - Function Recursion & Closures
Reference
JavaScript Reference - Function constructor
JavaScript Reference - function special operator
JavaScript Reference - function statement
JavaScript Reference - return statement
JavaScript Reference - new special operator
JavaScript Reference - this special operator
JavaScript Reference - arguments function scope statement
