1. Declaring methods for immediate functions
The immediate function (Immediate Functions) is a special JavaScript syntax that allows the function to execute immediately after it is defined:
(function () {
Alert (' Watch out! ');
}()); Here are a few of the following to understand this notation:
- The orange part is a function expression;
- The blue pair of parentheses represents the immediate execution, and the parentheses are the parameters required to execute the function (this example does not require parameters);
- Wrap up the upper part with a pair of parentheses (which is the black pair).
Black This pair of brackets can make people understand that this expression is the return value of the function, not the function object. Many people prefer the following wording, which is exactly the same as above:
(function () {
Alert (' Watch out! ');
})();
2. Application scenarios for instant functions
When you need to execute some initial code at the start of the program, the initialization is done only once, and the temporary variables used will no longer be useful, so you can put the code in an immediate function to execute:
(function () { var days = [' Sun ', ' Mon ', ' Tue ', ' Wed ', ' Thu ', ' Fri ', ' Sat '], today = new Date (), msg = ' Today Is ' + days[today.getday ()] + ', ' + today.getdate (); Alert (msg);} ()); "Today is Fri, 13"
3. Parameters of the immediate function
The following example shows a real-time function with parameters:
prints://I met Joe Black on Fri 23:26:59 GMT-0800 (PST) (function (who, when) { Console.log ("I met" + Who + ' on ' + when);} ("Joe Black", New Date ()));
Sometimes, you can also pass the global this object to the immediate function, so that the code in the immediate function can be reused in a different runtime environment:
(function (global) { //access the Global object via ' global '} (this);
Of course, if the parameters of the immediate function are more, and the function body is longer, you need to look up and down the function's parameter list definition and its formal parameter list, which is sometimes annoying.
4. Return value of immediate function
Just like the normal function, the immediate function also has a return value, which assigns the return value to the variable (note that this is not the assignment of a function object to a variable):
var result = (function () { return 2 + 2;} ());
If you remove the brackets outside the immediate function, the effect is exactly the same. This syntax is more concise, but it is easy to assume that the function object is assigned to the variable, in fact, the variable is the return value of the function:
var result = function () { return 2 + 2;} ();
As mentioned above, the immediate function is written in two ways, so the following code is identical in effect to the two above:
var result = (function () {
return 2 + 2;
})();
These three examples return the original data type. In fact, immediate functions can return any data, including function objects:
var GetResult = (function () { var res = 2 + 2; return function () { return res; };} ());
Because the immediate function can provide a separate local scope and finally a return value, some people prefer to use immediate functions when assigning an initial value to an object's properties:
var o = { message: (function () { var who = ' me ', what = ' call '; return what + "" + Who; ()), getmsg:function () { return this.message; }};/ /usageo.getmsg (); "Call me" o.message; "Call Me"
In the above example, the message is a string-type property, not a method.
5. Use of instant functions
Instant functions provide local variable scopes, do not pollute the global environment, and the code can be executed immediately, so it is often used in modular programs. If we put each function independent code snippet to organize with the immediate function, and put in a separate JS file, then when we want to use, the JS file can be introduced into it:
Module1 defined in Module1.js (function () { //all the Module 1 code ...} ());
http://zihui.lin.blog.163.com/blog/static/7292115420126335225160/
JavaScript Basics-Instant functions (Immediate Functions)