переменные не обьявлены, но работают
На этот раз у меня вопрос в образовательных целях... Итак, есть у меня функция:
function caption_building(caption, i, flag) {
switch (caption) {
case 'DONJON ROOMS':
text = ROOMS_UPGRADE_INFO[i]
data = Object.assign(BUILDINGS.rooms[i])
pageInfoID = 1;
break;
case 'CASTLE BUILDING':
text = BUILDINGS_UPGRADE_INFO[i]
data = Object.assign(BUILDINGS.castle[i])
pageInfoID = 2;
break;
case 'LANDS BUILDING':
text = LANDS_UPGRADE_INFO[i]
data = Object.assign(BUILDINGS.lands[i])
pageInfoID = 3;
break;
}
if (flag == 'bonus') {
return text;
} else {
return data;
}
}
И есть две функции, которые используют результаты ее выполнения:
let pageInfoID;
function page_bonus_info(el, i) {
let caption = el.closest('#tableBuildimg').caption.textContent
let text = caption_building(caption, i, 'bonus')
document.getElementById('buildaing_page').style.display = 'none';
document.getElementById('building_bonus_page').style.display = 'block';
printText('bonus_text', text)
}
//------------------------------------------------------------------------------
function upgrade_build(el, i) {
let div_id = el.closest('div').id
let caption = el.closest('#tableBuildimg').caption.textContent
let data = caption_building(caption, i, 'upgrade')
document.getElementById(div_id).style.display = 'none';
document.getElementById('building_upgrade_page').style.display = 'block';
print_necessary_to_upgrade(data)
}
И может прозвучит странно, но почему первая функция работает, когда я не обьявил ни text, ни data, они так же не являются глобальными переменными, которые находились бы за пределами этих функций? По идее должна произойти ошибка, но все работает просто идеально... Обьясните мне, почему?
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
Значит они глобальные.
function f() {
smth = 10
}
f()
console.log(smth)