Free Training
C Language   |   CSS   |   MainFrame   |   VBScript   |   PHP   |   XML   |   C++ Tutorials   |   Ajax   |   JavaScript   |   CSS3   |   UML   |   jQuery   |   Microsoft AJAX

Sponsored Links

Microsoft AJAX Tutorials

 
Home Tutorials Microsoft AJAX
 

Microsoft AJAX Library - Functions as Variables

 

Functions as Variables

In JavaScript, functions are first-class objects. This means that a function is regarded as a data type whose values can be saved in local variables, passed as parameters, and so on. For example, when defining a function, you can assign it to a variable, and then call the function through this variable. Take this example:



Sample Code
  1. // displays greeting
  2. var display = function DisplayGreeting(hour)
  3. {
  4. if (hour >= 22 hour <= 5)
  5. document.write("Goodnight, world!")
  6. else
  7. document.write("Hello, world!")
  8. }
  9. // call DisplayGreeting supplying an hour as parameter
  10. display(10)
Copyright exforsys.com



When storing a piece of code as a variable, as in this example, it can make sense to create it as an anonymous function—which is, a function without a name. You do this by simply omitting to specify a function name when creating it.


Sample Code
  1. // displays greeting
  2. var display = function(hour)
  3. {
  4. ...
  5. }
Copyright exforsys.com



Anonymous functions will come in handy in many circumstances when you need to pass an executable piece of code that you don't intend to reuse anywhere else, as parameter to a function.


Let's see how we can send functions as parameters. Instead of sending a numeric hour to DisplayGreeting(), we can send a function that in turn returns the current hour. To demonstrate this, we create a function named GetCurrentHour(), and send it as parameter to DisplayGreeting(). DisplayGreeting() needs to be modified to reflect that its new parameter is a function—it should be referenced by appending parentheses to its name. Here's how:


Sample Code
  1. // returns the current hour
  2. function GetCurrentHour()
  3. {
  4. // obtaining the current hour
  5. var date = new Date()
  6. var hour = date.getHours()
  7. // return the hour
  8. return hour
  9. }
  10. // display greeting
  11. function DisplayGreeting(hourFunc)
  12. {
  13. // retrieve the hour using the function received as parameter
  14. hour = hourFunc()
  15. // display greeting
  16. if (hour >= 22 hour <= 5)
  17. document.write("Goodnight, world!")
  18. else
  19. document.write("Hello, world!")
  20. }
  21. // call DisplayGreeting
  22. DisplayGreeting(GetCurrentHour)
Copyright exforsys.com



This code can be tested online at http://www.cristiandarie.ro/asp-ajax/Delegate.html" target="_blank" rel="nofollow". The output should resemble Figure 3-1.




NOTE: NET languages such as C# and VB.NET support similar functionality through the concept of delegates. A delegate is a data type that represents a reference to a function. An instance of a delegate represents a function instance, and it can be passed as a parameter to methods that need to execute that function. Delegates are the technical means used by .NET to implement event-handling. C# 2.0 added support for anonymous methods, which behave similarly to JavaScript anonymous functions.



Read Next: Microsoft AJAX Library - Anonymous Functions



 

 

Comments


0 said:

  I need a sample program that reads the character of a string in an array.
February 1, 2009, 9:45 pm

Post Your Comment:

Members Please Login
Your Name:*
e-mail ID:(required for notification)*
Image Verification: 
 
 Subscribe    

Sponsored Links