スコープに問題があります。関数の外側にある "var text"を宣言すると、すべて動作します。しかし、関数の中では、最初の部分でのみ動作します。ここに私が意味するものがあります:関数の可変スコープ
これはバッファ機能です。バッファ(「何か」)を実行すると「何か」が保存されます。プロパティなしでbuffer()を実行すると、すべてのプロパティが返されます。
- バッファ( "アル")
- バッファ( "EX")
- バッファー()<は=アレックス
しかし、 "テキスト" のSCOPEを返す必要が間違っているとそれはありません保存されたプロパティを返しません。正常な動作です
function makeBuffer() {
var text = "";
if (arguments.length != 0) {
for (let i = 0; i < arguments.length; i++) {
console.log(`Adding argument - (${arguments[i]})`);
text += arguments[i];
console.log(`New text - (${text})`);
}
} else {
console.log(`text - (${text})`);
return text;
}
}
var buffer = makeBuffer;
buffer("One", "Two");
document.write(buffer());
という名前の関数を返すために必要はありません: 'リターン機能バッファー()' – RomanPerekhrest
@RomanPerekhrestを - あなたはそれを呼び出すことを期待しますか、それを返さない場合は? – Quentin
@クエンティン彼は、単に機能に名前を付ける必要がないことを意味します。 'return function()' – 4castle