Exforsys.com
 
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

 

Subscribe via RSS


Get Daily Updates via Subscribe to Exforsys Free Training via email


Get Latest Free Training Updates delivered directly to your Inbox...

Enter your email address:


 

Subscribe to Exforsys Free Training via RSS
 

 
Partners -  Privacy and Legal Policy -  Site News -  Contact   Sitemap  

Copyright © 2000 - 2009 exforsys.com. All Rights Reserved

Page copy protected against web site content infringement by Copyscape