Вы пытаетесь объявить объект json, в котором сумма является просто другим свойством. Прежде чем объект будет определен, вы пытаетесь использовать его, что вообще невозможно.
Попробуйте это
dn =
{
documentTags:
{
elements: html.find('*'),
description: 'Document tags',
//amount: dn.documentTags.elements.length + 1,
// returns dn is undefined
amountNinja: 400,
amountTrainee: 1500,
amountNovice: 3000
}
};
dn.amount = dn.documentTags.elements.length + 1;