Потому что переменная
const topnavStyle = window.getComputedStyle(topnav)
создаётся один раз, при подключении скрипта, и более не меняется - перенесите ее внутрь функции.
Далее логика такова:
Если стиль равен 'none' то стиль равен 'block'. Если стиль равен 'block', то стиль равен 'none'.
Стиль меняется. Только в следующем условии возвращается обратно.
let topnav = document.getElementById('topnav');
function burger() {
const currentStyle = window.getComputedStyle(topnav)
topnav.style.display = currentStyle.display === 'none' ? 'block' : 'none'
console.log(currentStyle.display)
}
Учитесь дебагу и искать ошибки.