2016-08-24 2 views
0

Ниже приведенные фрагменты кода не являются фактическим кодом, они только для объяснения моей проблемы. Поэтому, пожалуйста, не сосредотачивайтесь на фактической функциональности. Я работаю с Adobe DTM. Я не знаю, как получить анонимную функцию, которая возвращает значение (в качестве элемента данных для создания глобальной функции? Если у меня есть обычная анонимная функция в моем элементе данных, все работает нормально. Если анонимная функция вернется, то это не делает «т работать есть ли способ, чтобы получить эту работу Пример:?Поиск глобальной функции от анонимной функции, возвращаемой в Adobe DTM

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

следующий код анонимной функции внутри элемента данных вызывает глобальную функцию, и она работает, как ожидалось:

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

но следующая анонимная функция возврата в элементе данных не вызывает мою функцию, но не вызывает никаких ошибок?:

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

Я знаю, что функция выполняет, но не получает ошибок в Chrome?

+1

Дублирование с: http://stackoverflow.com/questions/16068278/syntax-error-незаконный-return-statement-in-javascript При использовании в Chrome вы получите сообщение об ошибке с недействительным оператором return. –

+0

Я бегал по морю и не получал никаких ошибок. Также упомянутый вами вопрос, который был дублированным, не похож на мой. –

ответ

2

Элементы данных DTM выполняют код, предоставляемый внутри функции (это может быть непонятно для других пользователей здесь), поэтому в коде, который вы вводите/показываете здесь, будет функция return. Вы не возвращаете значение из своей функции (или если вы пытаетесь обновить rvalue внутри функции, а rvalue не находится в правильной области (окно против локального)). В любом случае, есть ли причина, по которой вы используете анонимную функцию? Ниже следует работать:

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

Если вы все еще хотите анонимную функцию, убедитесь, чтобы захватить возвращаемое значение из вашей функции:

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

Возвращающаяся анонимная функция - это устаревший код. –

0

Я не думаю, что вы можете вернуть функцию самозапускания, а затем снова вернуться в функцию.

0

Поскольку я еще не могу прокомментировать, я объясню это здесь более подробно, почему это действительно дубликат. Первый ответ на Ниет Темный Absol в ссылке я говорил выше (для справки: Syntax error: Illegal return statement in JavaScript), ясно говорит следующее:

return имеет смысл только внутри функции. В коде нет функции.

Чтобы применить это к вашему делу:

return (function() { 

Ваша первая линия, если бы вы инкапсулировать все в другой функции и называют, что один все будет прекрасно работать, например:

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

А затем вы можете позвонить по номеру myFunction(), чтобы получить возвращаемое значение. Я надеюсь, что это помогает вам.

+1

Я использовал только эти фрагменты, упрощенные примеры для объяснения моей ситуации.Глобальная функция на самом деле является вспомогательной функцией, а анонимная функция будет элементом данных, запущенным внутри Adobe DTM. –

Смежные вопросы