Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Creare funzioni dinamicamente

    Salve, devo fare questo esercizio: "Scrivere uno script che, usando il costruttore Function(), crei delle funzioni dinamicamente. Lo script deve chiedere all'utente il numero di parametri della funzione, il nome dei parametri ed il corpo della funzione. Dopo aver creato la funzione, lo script deve chiedere all'utente di dare in input dei valori per i parametri della funzione appena creata e deve restituire in output il suo valore. (Come corpo della funzione, usate solo funzioni semplici tipo "x+y", "x*y+z", ...)".
    Il mio script è questo:
    "n = parseInt(prompt("Inserire il numero del parametri",""));
    var parametri = new Array();
    for(i=0;i<n;i++) {
    parametri[i] = prompt("Inserire il nome del "+ (i+1) +" parametro","");
    }
    corpo = prompt("Inserire il corpo della funzione","");
    var f = new Function(parametri,corpo);
    var valori = new Array();
    for(i=0;i<n;i++) {
    valori[i] = parseFloat(prompt("Inserisci il valore del "+ (i+1) +" parametro",""));
    }
    document.write(f(valori));".
    La funzione me la crea, ma quando vado a inserire i valori 3 e 4, mi dà "3,4undefined". Potete aiutarmi? Grazie mille a tutti
    Ps: la funzione che creo è f = new function("a","b","return a+b;");
    Ultima modifica di Aleandro23; 26-01-2016 a 19:16

  2. #2
    uhm non è che sia proprio il massimo.
    e soprattutto, si può fare??
    a me nn ha mai funzionato la creazione di funzioni dinamiche.

    non sarebbe meglio creare una funzione parametrizzata e creare i parametri in maniera dinamica?
    Ultima modifica di fermat; 26-01-2016 a 21:56

  3. #3
    Quote Originariamente inviata da fermat Visualizza il messaggio
    uhm non è che sia proprio il massimo.
    e soprattutto, si può fare??
    a me nn ha mai funzionato la creazione di funzioni dinamiche.

    non sarebbe meglio creare una funzione parametrizzata e creare i parametri in maniera dinamica?
    Non ho capito, puoi farmi un esempio?

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao,
    uhm non è che sia proprio il massimo.
    e soprattutto, si può fare??
    a me nn ha mai funzionato la creazione di funzioni dinamiche.

    non sarebbe meglio creare una funzione parametrizzata e creare i parametri in maniera dinamica?
    Fare, si può fare. Pure io non l'ho mai fatto, forse perché non ne ho mai avuto il bisogno, ma ad ogni modo è un esercizio del cappero (che Aleandro23 confermi) datogli da qualche prof tanto per spiegare l'uso del costruttore Function.
    ...
    Nel caso, dovreste aver visto anche i relativi metodi bind(), call(), e apply(), giusto?

    Dovresti usare apply() per chiamare quella funzione passando gli argomenti in modo dinamico come array (vedi la documentazione):
    Una cosa del genere.
    codice:
    document.write(f.apply(null,valori));
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    3
    Ciao se ricordo bene dovresti fare una cosa del genere:

    var displayName = new Function('name', 'return alert("Ciao, " + name + "!");');


    dispalyName('kraw');

    Nel tuo caso hai sbagliato le doppie virgolette in alto. Il valore di input non de "a" ma deve essere 'a' e cosi via.

    f = new Function('a','b',"return a+b;");
    f(3,4)
    Ultima modifica di kraw; 27-01-2016 a 14:22

  6. #6
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao,

    Fare, si può fare. Pure io non l'ho mai fatto, forse perché non ne ho mai avuto il bisogno, ma ad ogni modo è un esercizio del cappero (che Aleandro23 confermi) datogli da qualche prof tanto per spiegare l'uso del costruttore Function.
    ...
    Nel caso, dovreste aver visto anche i relativi metodi bind(), call(), e apply(), giusto?

    Dovresti usare apply() per chiamare quella funzione passando gli argomenti in modo dinamico come array (vedi la documentazione):
    Una cosa del genere.
    codice:
    document.write(f.apply(null,valori));
    Grazie mille! Usando apply adesso funziona perfettamente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.