Вы неправильно понимаете / неправильно используете правила области видимости JavaScript.
Попробуйте передать массив, который вы разделяете явно и последовательно, и это должно решить вашу проблему, а также сохранить глобальное пространство имен менее загроможденным:
Сначала передайте вложения в первой функции явно:
function loadInAttachmentsIntoSquads(currentAttachments) {
var myAttachmentArray = currentAttachments.split(',');
setupWeaponAttachments(myAttachmentArray);
}
Обратите внимание на несколько вещей, которые я делаю выше. Во-первых, я добавляю currentAttachments
аргумент к функции, а не просто полагаюсь на ранее объявленную глобальную переменную. Во-вторых, я объявляю myAttachmentArray
как локальную переменную, используя ключевое слово var
. Объявление переменных с помощью var
объявляет их в локальной области видимости; в противном случае объявляет их в глобальном масштабе. В-третьих, я вручную передаю массив в функцию setupWeaponAttachments
, в которой я также получу аргумент:
function setupWeaponAttachments(myAttachmentArray) {
var myAttachmentForWeapon = myAttachmentArray[mySquadsIndex].split('');
// [...]
}
Обратите внимание, что я снова правильно объявил переменную myAttachmentForWeapon
в локальной области видимости.
Если вы будете более осторожны с управлением областью действия и правильно определите функции для получения необходимых им аргументов и работы с ними, вы избавите себя от головной боли в будущем, и у вас будет значительно меньше таких проблем.