Hacım öncelikle hayırlı geceler.
Sorun muhtemelen, JavaScript kodunda yer alan "icon" değişkeninde yaptığınız seçicinin yanlış yönlendirme almasından gibi ".icon i" deki i etiketinin .icon sınıfının altında olduğunu algılıyor direkt, i etiketi .icon sınıfının içinde yer alır.
Bundan dolayı, icon değişkenini doğru şekilde seçmek için ".icon i" yerine ".icon > i" kullanman gerekiyor. "> i" seçicisi, i etiketinin .icon sınıfının doğrudan altında olduğunu belirtmiş olur.
Düzeltilmiş halini iletiyorum deneyip dönüş yaparsan sevinirim.
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<title>Document</title>
<script type='text/javascript'>
var link = document.querySelector('.link');
var icon = document.querySelector('.icon > i');
link.addEventListener('click', function (event) {
event.preventDefault();
icon.classList.toggle('fa-arrow-right');
icon.classList.toggle('fa-arrow-left');
});
</script>
</head>
<body>
<a href="#" class="link"><span class="icon"><i class="fas fa-arrow-right"></i></span>Link Metni</a>
</body>
</html>