Javascript 从Adobe DTM中返回的匿名函数中寻找全局函数
下面的代码片段不是实际的代码,它们只是用来解释我的问题。所以请不要把注意力集中在实际的功能上。我正在使用Adobe DTM。我不知道如何获取一个返回值的匿名函数(作为源全局函数的数据元素?如果我的数据元素中有一个普通的匿名函数,则一切正常。如果匿名函数返回,则它不工作?是否有任何方法使其工作?示例:Javascript 从Adobe DTM中返回的匿名函数中寻找全局函数,javascript,function,adobe,adobe-analytics,Javascript,Function,Adobe,Adobe Analytics,下面的代码片段不是实际的代码,它们只是用来解释我的问题。所以请不要把注意力集中在实际的功能上。我正在使用Adobe DTM。我不知道如何获取一个返回值的匿名函数(作为源全局函数的数据元素?如果我的数据元素中有一个普通的匿名函数,则一切正常。如果匿名函数返回,则它不工作?是否有任何方法使其工作?示例: //global function function _myGlobalFunct(str){ return (str); } 数据元素中匿名函数的以下代码调用全局函数,并按预期工作: // wo
//global function
function _myGlobalFunct(str){
return (str);
}
数据元素中匿名函数的以下代码调用全局函数,并按预期工作:
// working anonymous function
(function () {
window._myGlobalFunct("value1");
})()
但是数据元素中的以下返回匿名函数不调用my函数,但不会抛出任何错误:
// Not Working Properly but doesn't throw any errors?
return (function() {
var rvalue = document.title || "No Title";
window._myGlobalFunct(rvalue);
return rvalue;
})();
我知道函数正在执行,但Chrome中没有出现任何错误?我不认为您可以返回一个自调用函数,然后在函数中再次返回。我不认为您可以返回一个自调用函数,然后在函数中再次返回。因为我还不能评论,所以我将在这里详细解释,为什么这确实是一个重复。Niet The Dark Absol在我上面提到的链接(参考:)中的第一个答案清楚地说:
return
仅在函数内部有意义。函数中没有函数
你的密码
要将此应用于您的案例:
return (function() {
是您的第一行,如果您将所有内容封装在另一个函数中并调用该函数,则所有内容都将正常工作,例如:
function myFunction(){
return (function() {
var rvalue = document.title || "No Title";
window._myGlobalFunct(rvalue);
return rvalue;
})();
}
然后你可以调用
myFunction()
来获取你的返回值。我希望这对你有所帮助。因为我还不能发表评论,所以我将在这里详细解释它,为什么它确实是重复的。Niet The Dark Absol在我上面提到的链接(供参考:)中的第一个答案清楚地说:
return
仅在函数内部有意义。函数中没有函数
你的密码
要将此应用于您的案例:
return (function() {
是您的第一行,如果您将所有内容封装在另一个函数中并调用该函数,则所有内容都将正常工作,例如:
function myFunction(){
return (function() {
var rvalue = document.title || "No Title";
window._myGlobalFunct(rvalue);
return rvalue;
})();
}
然后您可以调用
myFunction()
来获取返回值。我希望这对您有所帮助。DTM的数据元素执行函数中提供的代码(这里的其他用户可能不清楚),因此在此处输入/显示的代码中,函数外将有一个返回值。您没有从函数返回值(或者如果您试图在函数内更新rvalue
,并且rvalue
不在正确的范围内(窗口与本地))。在任何情况下,您使用匿名函数是否有任何原因?下面应该可以:
var rvalue = document.title || "No Title";
return window._myGlobalFunct(rvalue);
如果仍然需要匿名函数,请确保从函数中获取返回值:
return (function() {
var rvalue = document.title || "No Title";
return window._myGlobalFunct(rvalue);
})();
DTM的数据元素执行函数内提供的代码(此处的其他用户可能不清楚),因此在此处输入/显示的代码中,函数外将有一个返回值(或者,如果您试图在函数中更新rvalue
,并且rvalue
不在正确的范围内(窗口与本地))。在任何情况下,您使用匿名函数是否有任何原因?以下应能起作用:
var rvalue = document.title || "No Title";
return window._myGlobalFunct(rvalue);
如果仍然需要匿名函数,请确保从函数中获取返回值:
return (function() {
var rvalue = document.title || "No Title";
return window._myGlobalFunct(rvalue);
})();
重复使用:当在Chrome中使用时,您将收到非法返回语句的错误。我在Chrome中运行我的,没有收到任何错误。此外,您提到的重复问题与我的完全不同。重复使用:当在Chrome中使用时,您将收到非法返回语句的错误。我在Chrome和没有出现任何错误。另外,您提到的重复问题与我的问题完全不同。我只使用了这些片段、简化的示例来解释我的情况。全局函数实际上是一个帮助函数,匿名函数将是在Adobe DTM中运行的数据元素。我只使用了这些片段、简化的示例为了解释我的情况,全局函数实际上是一个helper函数,而匿名函数则是在adobedtm中运行的数据元素。