\n\n\n\nTomando como referência apenas esse trecho, um clique no botão com a página carregada provoca a exibição de:","inLanguage":"pt-BR","eduQuestionType":"Multiple choice","acceptedAnswer":{"@type":"Answer","text":"A) três alertas, com as mensagens “OK”, “OK” e “ERRO”;. Essa questão explora um detalhe clássico do JavaScript: a função pode receber qualquer quantidade de argumentos, mesmo que a assinatura não liste parâmetros. Dentro da função, o objeto especial arguments guarda o que foi efetivamente passado. Aqui, xpto(1,2,3) tem 3 argumentos, xpto(0) tem 1 e xpto() tem 0.\n\nO teste feito é simples: se arguments.length for 0, a variável text recebe \"ERRO\"; caso contrário, recebe \"OK\". Depois disso, a função mostra o valor com alert(text). Como cada chamada é executada separadamente a partir do atributo onclick, cada uma gera seu próprio alerta.\n\nAssim, a primeira chamada mostra \"OK\", a segunda também mostra \"OK\" e a terceira mostra \"ERRO\". Em prova, a banca costuma cobrar essa diferença entre parâmetro formal e argumentos recebidos de verdade, que é um clássico do JavaScript raiz.\n\nResumo prático: em JavaScript, o que manda não é o nome da função, mas o que chegou dentro de arguments. Se chegou algo, a lógica cai no bloco \"OK\"; se não chegou nada, cai no \"ERRO\"."},"suggestedAnswer":[{"@type":"Answer","text":"B) três alertas, com as mensagens “undefined”, “undefined” e\n“ERRO”;"},{"@type":"Answer","text":"C) um alerta apenas, com a mensagem “ERRO”;"},{"@type":"Answer","text":"D) um alerta apenas, com a mensagem “OK”;"},{"@type":"Answer","text":"E) um alerta apenas, com a mensagem “undefined”."}]}← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

Analise o trecho de página Web a seguir. <body> <button onclick="xpto(1,2,3);xpto(0);xpto();">?</button> <script> function xpto() { if (arguments.length == 0) { text = "ERRO"; } else { text = "OK"; } alert(text); } </script> </body> Tomando como referência apenas esse trecho, um clique no botão com a página carregada provoca a exibição de:

Gabarito: A

Essa questão explora um detalhe clássico do JavaScript: a função pode receber qualquer quantidade de argumentos, mesmo que a assinatura não liste parâmetros. Dentro da função, o objeto especial arguments guarda o que foi efetivamente passado. Aqui, xpto(1,2,3) tem 3 argumentos, xpto(0) tem 1 e xpto() tem 0. O teste feito é simples: se arguments.length for 0, a variável text recebe "ERRO"; caso contrário, recebe "OK". Depois disso, a função mostra o valor com alert(text). Como cada chamada é executada separadamente a partir do atributo onclick, cada uma gera seu próprio alerta. Assim, a primeira chamada mostra "OK", a segunda também mostra "OK" e a terceira mostra "ERRO". Em prova, a banca costuma cobrar essa diferença entre parâmetro formal e argumentos recebidos de verdade, que é um clássico do JavaScript raiz. Resumo prático: em JavaScript, o que manda não é o nome da função, mas o que chegou dentro de arguments. Se chegou algo, a lógica cai no bloco "OK"; se não chegou nada, cai no "ERRO".

Continue treinando

Questões relacionadas