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.