这次我的问题是出于教育目的......所以,我有一个功能:
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,它们也不是位于这些函数之外的全局变量?从理论上讲,应该会发生错误,但一切都很完美......向我解释一下为什么?
这意味着它们是全球性的。