Traté de hacer una función que escribe algunos divs en un documento HTML. Todo funciona bien, pero quiero intentar cambiar la declaración de función de esto:
function writeDiv(divDOMelement, numberOfExcercises, numberOfTasksInEx);A algo como esto
function writeDiv(divDOMelement, {numberOfExcercises:N, numberOfTasksInEx:[v]})Para que quede claro, la primera declaración funciona perfectamente, pero cuando intenté implementar la segunda y cambiar la llamada a la función, recibí un error.
Aquí está el código completo:
let open = false; let currentlyOpen; function writeDiv(divDOMelement, {numberOfExcercises:N, numberOfTasksInEx:[v]}) { for (let i = 0; i < numberOfExcercises.N; i++) { // ... didnt include the code that prints the divs on the site just to make it easier to read. for (let j = 0; j < numberOfTasksInEx.v[i]; j++) { // ... same as the first loop. } } } $(document).ready(function () { writeDiv("#mainDiv", {numberOfExcercises:3, numberOfTasksInEx:[5,2,3]}); });Solo para aclarar, este numberOfTasksInEx debe ser una matriz, el primer elemento de la matriz me dice que el primer ejercicio tendrá tantas tareas, el segundo me dice que el segundo ejercicio tendrá tantas tareas, y así sucesivamente.
El error que estoy recibiendo:
jQuery.Deferred exception: numberOfExcercises is not defined Uncaught ReferenceError: numberOfExcercises is not definedLa sintaxis de su declaración es incorrecta. Todo lo que necesitas es:
function writeDiv(divDOMelement, {numberOfExcercises, numberOfTasksInEx}) Luego, dentro de su función, tendrá numberOfExercises como el recuento general y numberOfTasksInEx como la matriz de tareas por ejercicio.
La sintaxis de la declaración extrae esas propiedades del único objeto pasado como segundo parámetro a la función en un proceso llamado "descomposición". El : en su versión hace algo, pero no lo que espera su código: permite cambiar el nombre del nombre de la propiedad del objeto fuente (el parámetro real). Eso no es realmente necesario aquí, pero por ejemplo numberOfExercises:N significaría que en su función se referiría simplemente a N , no a numberOfExercises.N .