Calling JavaScript function from String

While creating the jQuery plugin for DIV TEXT BOX: Create orkut style status update box, I had a requirement where in I had to call a JavaScript function whose name is specified as a string in some tag. For example, user is giving name of function in a text box and you have to call that function. Calling simple JavaScript function is easy, just call it :) e.g. someFunction() or someOtherFunction(‘text’, 101); But what if you don’t know the name of function to be called and you know this only at runtime? Check following demo.

Demo

In above demo, click Call button. You can see an alert box with value ‘Happy New Year.!!’. Once you click the Call button, a function fnFooBar gets called. The name of the function and parameter is specified in first text box and the body of the function is in the text area. Change the function parameter or add a new function in the textarea and call it from text box and then click Call button. You can see that the function gets called although it is not parsed by the browser. Now how do we do this? Simple, we use eval() method of JavaScript to evaluate and register the javascriot elements dynamically. Thus is you have a string whose value is the function name. You can call it by eval() function as follow:
var strFun = "someFunction"; var strParam = "this is the parameter"; //Create the function call from function name and parameter. var funcCall = strFun + "('" + strParam + "');"; //Call the function var ret = eval(funcCall);
Code language: JavaScript (javascript)
You can use eval() function to register any kind of JavaScript code like loading a JavaScript file from using AJAX and then registering it with the browser. This way you can load your BIG BIG javascript files on fly by ajax and register it as an when required. UPDATE: It seems that there is a better way to do this without using eval method. Thanks @Jerome for the comment. Use window[functionName](parameters) to call any function functionName. See below example:
var strFun = "someFunction"; var strParam = "this is the parameter"; //Create the function var fn = window[strFun]; //Call the function fn(strParam);
Code language: JavaScript (javascript)

View Comments

  • How do you send parameters that aren't strings to the function though? Lets say you've got FunctionNameString and Object ... how would you call FunctionNameString(Object) ?

  • What I found easier is:

    // convert string to a function reference (if it exists)
    fun = eval(strFun);
    // call it
    fun(param1, param2);

    This worked in IE6 and FF3.5 so I guess it works in others too.
    Using this method enables me to use objects as parameters.

  • You should understand that using of 'eval' is not good enough practice. Happily all js functions are stored in huge 'window' object (if you use js inside browser, of course).
    So you can get direct pointer to your function by calling
    window['here_is_your_function_name_in_string'];
    Or you can even test if this function exists:
    window.hasOwnProperty('here_is_your_function_name_in_string');

    Ok, complete sample is:
    var s = "my_function";
    if (window.hasOwnProperty(s)) window[s](params);

  • javascript eval() function

    name0,name1,name3 are javascript variables.
    jline0,jline1,jline2 are javascript arrays

    str="{name : name0,data : jline0},{name : name1,data : jline1},{name : name2,data : jline2 }";
    var ff=eval(str);

    document.ready(
    .
    .

    series :[ff]
    .
    .
    });

    I can't pass ff value in series parameter. Please anyone help me. .

Share
Published by
Viral Patel
Tags: eval function function call How-To JavaScript

Recent Posts

  • Java

Java URL Encoder/Decoder Example

Java URL Encoder/Decoder Example - In this tutorial we will see how to URL encode/decode…

5 years ago
  • General

How to Show Multiple Examples in OpenAPI Spec

Show Multiple Examples in OpenAPI - OpenAPI (aka Swagger) Specifications has become a defecto standard…

5 years ago
  • General

How to Run Local WordPress using Docker

Local WordPress using Docker - Running a local WordPress development environment is crucial for testing…

5 years ago
  • Java

Create and Validate JWT Token in Java using JJWT

1. JWT Token Overview JSON Web Token (JWT) is an open standard defines a compact…

5 years ago
  • Spring Boot

Spring Boot GraphQL Subscription Realtime API

GraphQL Subscription provides a great way of building real-time API. In this tutorial we will…

5 years ago
  • Spring Boot

Spring Boot DynamoDB Integration Test using Testcontainers

1. Overview Spring Boot Webflux DynamoDB Integration tests - In this tutorial we will see…

5 years ago