1

文字列を処理し、関数から最終結果を取得して、次の関数で再利用できるようにしたいと考えています。基本的に、私は現在アプローチしています:

function pre_processing(str){
 str = str.replace(/\d/g, ""); // delete all digit (a simplier example than my code)
 return str;
}
function post_processing(){ 
 // do processing n⁰2 on var str
}
pre_processing("w0rd2");
console.log(str) // fails! Uncaught ReferenceError: str is not defined 
post_processing(str); // fails, haven't input

これは機能しません。私は何を間違っていますか?それはreturn正しく行われていないのですか、それとも非同期の JS に関連していますか? 他の ?2. 正しい方法は?

完全な JS コード: http://jsfiddle.net/hugolpz/CYwD3/7/ (できるだけシンプルにしました)

4

3 に答える 3

5

関数はその戻り値と等しいため、次のようになります。

var str = pre_processing("w0rd2");
于 2013-11-06T19:36:22.670 に答える
2

「前処理」関数は文字列を返しますが、戻り値に注意を払っていません:

var str = pre_processing("w0rd2");

これで、関数の外側に「str」という変数ができました。

もちろん、最初の結果に 2 番目の関数を直接適用することもできます。

console.log( post_processing( pre_processing("w0rd2") ) );
于 2013-11-06T19:37:57.123 に答える
1

関数が評価の値を想定しているため、返されるときに var に割り当てる必要があります。

var newStr = pre_processing("w0rd2");

また、これで関数を短くします

return str.replace(/\d/g,"");

それ以外のstr = str.replace(/\d/g,""); return str;

そして最後に

var newStr = post_processing(newStr);
于 2013-11-06T19:38:45.817 に答える