2016-08-24 3 views
0

以下のコードスニペットは実際のコードではなく、私の問題を説明するためのものです。だから実際の機能に集中しないでください。私はAdobe DTMで作業しています。私はどのように値を返す匿名関数を取得する(グローバル関数のソースにデータ要素として?私のデータ要素内に通常の匿名関数がある場合、すべてうまく動作します。 ?」tが動作し、この作業を取得する方法はあります例:?Adob​​e 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-illegal-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

まだコメントできませんので、ここで詳しく説明します。なぜ実際には重複しているのですか? Nietによる最初の回答(参考:Syntax error: Illegal return statement in JavaScript)私は上記のリンクでダークアブソルは、明らかに次の言葉:

returnは、関数の内部でのみ意味があります。あなたのコード には機能はありません。あなたの場合にこれを適用するに

:あなたは例えば、別の関数にすべてのものをカプセル化し、1つのすべてが正常に動作されることを呼び出すかどう

return (function() { 

は、あなたの最初の行です:

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

そして、myFunction()に電話して戻り値を取得することができます。これがあなたを助けることを願っています。

+1

私はこれらのスニペットの単純な例を使用して私の状況を説明しました。グローバル関数は実際にはヘルパー関数であり、無名関数はAdobe DTM内で実行されるデータ要素です。 –

関連する問題