从 Adob​​e DTM 中 Returns 的匿名函数获取全局函数

Sourcing Global Function from an Anonymous Function that Returns in Adobe DTM

下面的代码片段不是实际代码,它们只是用来解释我的问题。所以请不要专注于实际功能。我正在使用 Adob​​e DTM。我不知道如何获得一个 return 值的匿名函数(作为数据元素来获取全局函数?如果我的数据元素中有一个普通的匿名函数,一切正常。如果匿名函数 returns,那么它不起作用?有什么办法让它起作用吗?示例:

//global function
function _myGlobalFunct(str){
return (str);
}

数据元素中匿名函数的以下代码调用全局函数并且按预期工作:

// working anonymous function
 (function () {
 window._myGlobalFunct("value1");
 })()

但是数据元素中的以下 return 匿名函数没有调用我的函数但也没有抛出任何错误? :

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

我知道函数正在执行,但在 Chrome?

中没有收到任何错误

我不认为你可以return一个自调用函数然后在函数中再次return。

因为我还不能发表评论,所以我会在这里更详细地解释一下,为什么它确实是重复的。我上面提到的 link 中 Niet the Dark Absol 的第一个回答(供参考:Syntax error: Illegal return statement in JavaScript),清楚地说了以下内容:

return only makes sense inside a function. There is no function in your code.

将此应用于您的案例:

return (function() {

是你的第一行,如果你将所有内容封装在另一个函数中并调用那个函数,一切都会正常工作,例如:

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

然后您可以调用 myFunction() 来获取您的 return 值。希望对您有所帮助。

DTM 的数据元素执行函数内提供的代码(这里的其他用户可能不清楚),因此代码中的函数外会有 return input/show 这里。您没有 return 从函数中获取值(或者如果您试图在函数内更新 rvaluervalue 不在正确的范围内(window 与本地))。无论如何,您是否有理由使用匿名函数?以下应该有效:

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

如果您仍然需要匿名函数,请确保从您的函数中获取 return 值:

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