Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Não entendi porque o professor tirou a declaração da variável

Não entendi porque o professor colou a linha var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; e depois tirou o termo var de declaração da variável, trocando var SpeechRecognition por document.SpeechRecognition.

Testei o código sem fazer a troca e funcionou normalmente.

1 resposta
solução!

Oi, tudo bem?

A alteração de var SpeechRecognition para window.SpeechRecognition é uma questão de escopo e compatibilidade.

Quando o professor declara var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition, ele está criando uma variável local que verifica se o objeto SpeechRecognition está disponível no objeto window (que representa uma janela aberta em um navegador). Se não estiver disponível, ele tenta usar o webkitSpeechRecognition, que é uma versão específica do Webkit (o motor de renderização usado por navegadores como Chrome e Safari).

Posteriormente, o professor altera a declaração para window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition. Aqui, em vez de criar uma variável local, ele está diretamente atribuindo ao objeto window a referência para o objeto SpeechRecognition ou webkitSpeechRecognition. Isso significa que SpeechRecognition agora é uma propriedade do objeto window e pode ser acessada globalmente em qualquer parte do código.

Em relação ao seu teste, o código pode funcionar normalmente com var SpeechRecognition se você estiver usando-o apenas no mesmo escopo em que foi declarado. No entanto, se você tentar acessar SpeechRecognition em um escopo diferente (por exemplo, em outra função ou arquivo JavaScript), você pode encontrar problemas, pois var é limitado ao escopo onde foi declarado. Portanto, ao usar window.SpeechRecognition, o professor garante que o objeto SpeechRecognition possa ser acessado globalmente em todo o projeto.

Um abraço e bons estudos.