> Tous les forums > Forum Autres langages
 Fonction Java Script
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
persia
  Posté le 13/01/2007 @ 03:19 
Aller en bas de la page 
Petit astucien

Bonjour ,

Pourquoi on ne pourrait faire la chose suivante en javascript? :

<SCRIPT language="Javascript">
<!--

for (i=1; i<3 ; i++){
function test"+i+"(){
document.write('salut"+i+"');
}
}

test1(); // J'appele la fonction test1, donc "salut 1"
test2(); // J'appele la fonction test2, donc "salut 2"
// -->
</SCRIPT>

J'espère que vous comprenez ce que je veux faire

On m'a suggéré la fonction eval(), ca fonctionne, mais ca cause pleins de problèmes

quand je veux ajouter du code.

Si vous avez une autre solution, je suis preneur.

Merci

Publicité
breizhbugs
 Posté le 13/01/2007 à 11:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Aucun language de programmation ne permet ce genre de declaration de fonction tout simplement. Pourquoi? precisement j'en sais rien mais on pou supposer que c'est peu lisible, parce qu'il n'y a aucun interet a faire x functions qui ont exactement le meme code...

Je connais pas trop le javascript, mais c'est tres facile de modifier ton programme pour qu'il donne le meme resultat:

//<SCRIPT language="Javascript">
//<!--

//function test(var i){
//document.write('salut"+i+"');
//}

//test(1); // J'appele la fonction test1, donc "salut 1"
//test(2); // J'appele la fonction test2, donc "salut 2"
// -->
//</SCRIPT>



Modifié par breizhbugs le 13/01/2007 11:30
persia
 Posté le 13/01/2007 à 13:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
breizhbugs a écrit :

Bonjour,

Aucun language de programmation ne permet ce genre de declaration de fonction tout simplement. Pourquoi? precisement j'en sais rien mais on pou supposer que c'est peu lisible, parce qu'il n'y a aucun interet a faire x functions qui ont exactement le meme code...

Je connais pas trop le javascript, mais c'est tres facile de modifier ton programme pour qu'il donne le meme resultat:

//

Justement, le javascript le permet avec la fonction eval(), mais moi je ne veux pas utiliser le eval().

Pour ce qui est de ton code, il ne fonctionne pas, est-ce que tu la tester?

Merci




Modifié par persia le 13/01/2007 13:45
breizhbugs
 Posté le 13/01/2007 à 14:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pas tester, je connais pas trop le js donc voila c'est juste l'idee.

C'est quoi ton histoire d'eval?

EDIT: ca ca marche: (enleve les 2 premiers // a chaque lignes)

//<SCRIPT language="Javascript">
//<!--

//function test(i){
//document.write('salut'+i+' ');
//}

t//est(1); // J'appele la fonction test1, donc "salut 1"
//test(2); // J'appele la fonction test2, donc "salut 2"
////-->
//</SCRIPT>



Modifié par breizhbugs le 13/01/2007 14:19
persia
 Posté le 14/01/2007 à 00:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
persia a écrit :

breizhbugs a écrit :

Pas tester, je connais pas trop le js donc voila c'est juste l'idee.

C'est quoi ton histoire d'eval?

EDIT: ca ca marche: (enleve les 2 premiers // a chaque lignes)

//

Voici mon histoire du eval():

Avec la eval(), on peut évaluer une chaine de caractère comme un script.

Je l'ai utilisé dans mon code, ca marche, mais il faut s'assurer que la chaine

de caractère qu'on passe à eval doit toujours rester sur la même ligne dans le code

html,sinon le code ne fonctionne plus , et je trouve que c'est pas mal chiant.

Voilà


persia
 Posté le 14/01/2007 à 00:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

<SCRIPT language="Javascript">
<!--

function test(i){
document.write('salut'+i+' ');
}

test(1); // J'appele la fonction test1, donc "salut 1"
test(2); // J'appele la fonction test2, donc "salut 2"

-->
</SCRIPT>

Le code fonctionne seulement si j'ai des chiffres que

je passe en paramètre aux fonctions ex :"test(1)",

moi je voulais plutôt faire : test1() et non test(1).

Merci

koala01
 Posté le 14/01/2007 à 16:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Salut,

Le problème se situe, principalement, au niveau "processeur"...

Comme tout finit, à un moment ou un autre, par etre gérer par le processeur (en ce qui concerne, du moins, l'appel des fonctions), je suis désolé, mais, si tu veux une explication complete... il faudra une base qui te permette de comprendre [langue].

En gros, au niveau de la mémoire et du processeur, tout est transformé en binaire (une succession relativement écoeurante de 0 et de 1)

Il faut favoir qu'à ce niveau, il n'y a plus rien qui différencie une instruction que le processeur doit effectuer d'une donnée qu'il doit utiliser.

La seule chose, c'est que, quelque part dans le processeur, tu as la valeur de l'adresse mémoire à laquelle il *devrait* trouver l'instruction suivante (parce qu'il sait pour chaque instruction combien de bits doivent etre lus comme "données" apres avoir lu l'instruction)

L'astuce, c'est que, quand on appelle une fonction, au niveau du processeur, on va lui dire d'effectuer certaines actions (typiquement, placer la valeur des registres, des flags et du pointeur courant dans sa pile) puis de "sauter" à l'adresse à laquelle la fonction commence.

Le corrolaire, c'est que le nom d'une fonction n'a du sens... que pour l'humain, et n'en a strictement aucun pout l'ordinateur.

Si, en tant qu'humain, tu peux dire que ton nom de fonction c'est la concaténation de ma et de fonction, il est strictement impossible de trouver un moyen pour "traduire" ma+fonction en une adresse à laquelle trouver le début de la fonction pour l'ordinateur...

Ou alors, il s'agit de travailler directement en "code machine" et de lui dire qu'il devra ajouter la valeur qu'il trouve à tel endroit à celle qui se trouve à tel autre endroit pour obtenir l'adresse à laquelle se trouve le début de la fonction (le tout en espérant qu'aucune souris n'ai rongé les cables, sous peine de provoquer des catastrophes [langue])

Par contre, grace au passage de parametre et aux structures de test, il est possible de choisir la fonction qui sera appelée

exemple

function mafonct()
{
for(i=0;i<10;i++)
{
// on appelle fonct1 chaque fois que c'est pair et fonct2 chaque fois que c'est impaire
if(i%2==0)
fonct1();
else
fonct2()
}
}

function fonct1()
{
document.write('salut1"');
}
function font2
{
document.write('salut1"');
}

persia
 Posté le 15/01/2007 à 19:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Koala, mais j'ai trouvé un truc avec php.




Modifié par persia le 15/01/2007 19:10
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
999,99 €Portable 15,6' Lenovo Legion 5 (Ryzen 5, 8Go, SSD 512Go, RTX3060) à 999,99 €
Valable jusqu'au 25 Juillet

Cdiscount fait une promotion sur le PC portable Lenovo Legion 5 (15ACH6H) dédié aux joueurs qui passe à 999,99 € au lieu de 1300 €. Ce PC portable très bien équipé possède un écran 15,6 pouces LED Full HD, un processeur AMD Ryzen 5 5600H, 8 Go de RAM, un SSD de 512 Go et une carte graphique GeForce RTX 3060 6 Go dédiée qui avalera tous vos jeux sans broncher. Il est fourni sans OS, mais vous pouvez facilement installer Windows 10.


> Voir l'offre
68,40 €Boîtier Fractal Design Define C avec panneau en verre trempé à 68,40 €
Valable jusqu'au 25 Juillet

Amazon propose actuellement l'excellent boîter moyen tour Fractal Design Define C Black TG avec un panneau en verre trempé à 68,40 € alors qu'on le trouve ailleurs à plus de 100 €. Le boitier PC Define est une plateforme conçue pour délivrer l'une des meilleures performances de refroidissement et de silence. 2 ventilateurs Dynamic GP12 120 mm sont inclus.


> Voir l'offre
779,90 €Ultrabook HONOR MagicBook Pro 16.1 (Ryzen 5 4600H, 16Go, 512Go SSD) à 779,90 €
Valable jusqu'au 24 Juillet

Amazon fait une belle promotion sur l'ultrabook HONOR MagicBook Pro 16.1 qui passe à 779,90 € au lieu de 929 €. Cet ordinateur portable possède un écran 16.1 pouces Full HD IPS 100% sRGB, un processeur AMD Ryzen 5 4600H à 6 coeurs (avec chip graphique Vega 6), 16 Go de mémoire DDR4, un SSD 512 Go PCIe NVME, le WiFi5 / Bluetooth 5.0, un lecteur d'empreintes, une webcam, un clavier rétro éclairé, une batterie 56 Wh (jusqu'à 11h d'autonomie et recharge rapide) et ne pèse que 1,7 kg. Il fonctionne sous Windows 10. Une très bonne affaire pour une machine compacte et puissante.


> Voir l'offre

Sujets relatifs
Erreur java script
erreur a l'instalation de java script sous vista
script java avec foxmail
Comment mettre un temps dans un Script
Classer une arraylist (java)
Ameliorer le Main "Java" avec les fonctions & procédures
Comment exclure 0 dans une fonction
Rafraichir un tableau en java
Calcul du jour d'après - - > java
Script PHP, listant dossier et fichiers et se connectant a une BDD
Plus de sujets relatifs à Fonction Java Script
 > Tous les forums > Forum Autres langages