私はローカル変数を持つ再帰関数を持っています。 特定の条件で自分自身を呼び出します。 ローカル変数は更新する必要がありますが、すべての呼び出しは現在の関数スコープに固有の新しいローカル変数を作成します。 どのように私はすべての再帰的なループにアクセスし、新しいものを作成しないためにローカル変数に到達できますか? __Callee.varnameのようなもの?再帰的ループのためにJavascriptローカル変数をグローバルにする
コードは次のとおりです。
var addAttribute = function(object,elem)
{
var attributes = [];
// only attribute without values
if (object instanceof Array)
{
for (var value in object)
{
attributes.push(object[value]);
}
}
// attribute with values
else if (object instanceof Object)
{
for (var key in object)
{
if (object[key] instanceof Array)
{
addAttribute(object[key],elem);
}
else
{
attributes.push(key+'=\''+object[key]+'\'');
}
}
}
// Only one attribute
else if (typeof object === 'string')
{
attributes.push('\''+object+'\'');
}
// Invalid parameter
else
{
console.log('Invalid parameter: '+typeof object);
}
console.log('<'+elem+' '+attributes.join(' ').toString()+' />');
}
私は理由はすでに他の機能とグローバルスコープでこの名前を使用してのグローバルに変数を作成する必要はありません。
クロージャを使用してください。 –
@NémethPeter:申し訳ありませんが、「呼び出し元関数属性」または「呼び出された関数属性」の意味を理解できません。上記は、Ninaの答えの中の共有された 'x'のように、単一の共有配列を使用します。 –