?
Solved

Having Returning  Anonymous Function Access Global Function

Posted on 2016-08-23
7
Medium Priority
?
143 Views
Last Modified: 2016-09-22
I have no idea how to get an anonymous function that returns a value to source a global function? If I have a normal anonymous function, everything works fine. If the anonymous function returns, then it doesn't work? Is there any way to get this to work? Example:
/ /global function
function _myGlobalFunct(str){
return (str);
}

Open in new window

the following anonymous function calls global function and it works as expected:
// working anonymous function
 (function () {
 window._myGlobalFunct("value1");
 })()

Open in new window

but the following return anonymous function doesn't call my function but doesn't throw any errors? :
// Not Working Properly but doesn't throw any errors?
return (function() { 
  var rvalue = document.title || "No Title";
 window._myGlobalFunct(rvalue);
return rvalue;
})();

Open in new window

0
Comment
Question by:894359
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 19

Expert Comment

by:Albert Van Halen
ID: 41768574
Use a function expression instead of function declaration.
So your code will look like this
_myGlobalFunct = function(str) {}

Open in new window

See : https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/
0
 
LVL 34

Expert Comment

by:Slick812
ID: 41768987
greetings 894359, , I looked at what you call an "anonymous function" as -

return (function() {
  var rvalue = document.title || "No Title";
 window._myGlobalFunct(rvalue);
return rvalue;
})();


To me, the problem is when you placed the "return" as the FIRST operation in that progression, I can not see as there is Anything to return "TO", so I can not understand Why you even placed the "return" there at the beginning? ? and you have your "anonymous function" returning a String, Why? ? if you do not use that string on the return, why have a string return?

I have tried this in firefox and it works -
var r = "";

r = (function() { 
  var rvalue = document.title || "No Title";
 _myGlobalFunct(rvalue+"!!");
return rvalue+"!!";
})();

document.title = r;

Open in new window


Please notice that I have a return variable as -
      r =
for the function, so it can use the result of the text change,
ALSO I have NOT used the     window.      in-
       window._myGlobalFunct(rvalue);

and have it as a more practical -
       _myGlobalFunct(rvalue+"!!");
whay place a     window.     if it's not needed ?

One last observation, I do not see as using this "anonymous function" is any coding or functional advantage, so why use it?
couldn't you just use -
var rvalue = (document.title || "No Title")+"!!";
 _myGlobalFunct(rvalue);
document.title = rvalue

Open in new window

0
 

Author Comment

by:894359
ID: 41769279
Just a little clarification, these are NOT the exact functions I'm using,  so don't focus on the functionality, only getting the global function to be called within the anonymous function. I just used these for clarification and to simplify the issue. In actuality , I'm trying to use a helper function in Adobe DTM. The Anonymous function is actually a bigger function that runs as a data element.
0
Video: Liquid Web Managed WordPress Comparisons

If you run run a WordPress, you understand the potential headaches you may face when updating your plugins and themes. Do you choose to update on the fly and risk taking down your site; or do you set up a staging, keep it in sync with your live site and use that to test updates?

 
LVL 34

Expert Comment

by:Slick812
ID: 41769697
OK, but most any javascript will not run after a -
   return

as the first element of the syntax unless there is a "container" to exit the code flow an "return"  to the code flow "out of" the container (method or function), so just have the function called as you first have it with out the "return" element, , as -

(function () {
0
 

Author Comment

by:894359
ID: 41771174
Hi Slick, the code does get encapsulated by other JS code.

0
 
LVL 34

Accepted Solution

by:
Slick812 earned 2000 total points
ID: 41771821
OK, so it is part of a larger javascript Object structure, the Adobe DTM I guess, but I can not see or know the "Scope" of method variable inclusion, in an organization I do not know. If the "result" is not causing the problem, then my only guess is that the inclusion "Scope" does now include the -
      window._myGlobalFunct( )

but that does not seem posible to me? ? since you stated that the first code you had -
// working anonymous function
(function () {
window._myGlobalFunct("value1");
})()

worked?
So maybe someone else can help? ?
0
 

Author Comment

by:894359
ID: 41811722
I had a syntax error on my side. This works as designed.
0

Featured Post

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
Originally, this post was published on Monitis Blog, you can check it here . Websites are getting bigger and more complicated by the day. Video, images and custom fonts are all great for showcasing your product or service. But the price to pay in…
In this tutorial viewers will learn how to code links for mobile sites that, once clicked, send a call or text to a specified number. For a telephone link (once clicked, calls a number), begin with a normal "<a href=" link tag. For the href, specify…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
Suggested Courses

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question