Actualmente estoy haciendo un curso de javascript en udemy y encontré un problema con un pequeño desafío de codificación. Se supone que el código elige a una persona al azar de una matriz. Mi código funciona en su plataforma de prueba, pero no puedo hacer que funcione en las herramientas de desarrollo de Chrome.
var names = ["Angela", "Ben", "Jenny", "Michael", "Chloe"]; function whosPaying(names) { var randomNumber = Math.random(); var arrayLength = names.length; var hasToPay = Math.floor((arrayLength * randomNumber)); return names[hasToPay] + " is going to buy lunch today!" } whosPaying();Si escribo mi código de esta manera, funciona en el entorno de prueba cuando envío el código sin la matriz "nombres", pero en Chrome aparece el siguiente error:
index.js:5 Uncaught TypeError: Cannot read properties of undefined (reading 'length') at whosPaying (VM165 index.js:5) at VM165 index.js:11Si defino la matriz dentro de la función, funciona, pero eso no es realmente lo que se supone que debo hacer.
Me pregunto cómo puedo hacer que la función use la matriz que se define fuera de la función. En las instrucciones del ejercicio, la matriz y la forma en que se pasa a la función están predefinidas exactamente de la misma manera que yo lo hice.
No pude encontrar una solución a esto que no incluya una sintaxis completamente diferente o cosas que se supone que aún no debo saber en este punto del curso.
Sobrescribe los nombres globales si pasa un parámetro con el mismo nombre.
var names = ["Angela", "Ben", "Jenny", "Michael", "Chloe"]; function whosPaying(names) { var randomNumber = Math.random(); var arrayLength = names.length; var hasToPay = Math.floor((arrayLength * randomNumber)); return names[hasToPay] + " is going to buy lunch today!" } let r = whosPaying(); console.log(r);Puede pasar parámetros a la función e imprimir el valor de retorno:
function whosPaying(names) { var randomNumber = Math.random(); var arrayLength = names.length; var hasToPay = Math.floor((arrayLength * randomNumber)); return names[hasToPay] + " is going to buy lunch today!" } var names = ["Angela", "Ben", "Jenny", "Michael", "Chloe"]; console.log(whosPaying(names))