2010-10-31 3 views

Répondre

1

Votre deuxième exemple est invalide:

return{  
     init(); 
    } 

Le { ... } définit un objet littéral qui doit contenir les paires clé-valeur, comme { foo: 'bar' }.

1

Votre premier exemple fera les choses dans init et renverra undefined.

Votre deuxième exemple n'est pas valide. Je pense que vous vouliez:

return init() 

sans accolades. Cela renverra le résultat de init (que vous n'avez pas spécifié). Dans les deux cas, setup et moreSetup ne sont jamais appelés, donc je ne sais pas pourquoi ils sont là.

Vous avez omis beaucoup de détails, mais ma réponse est la suivante: si l'appelant doit faire quelque chose avec le résultat de init, vous devrez utiliser l'option # 2.

0

Sans vouloir vous offenser, cette question semble confuse. Comme d'autres l'ont noté, vous ne devriez pas avoir les parenthèses autour de init() dans le deuxième exemple. Et quand vous dites vous définissez simplement la fonction, ne l'appelez pas - ce qui signifie que dans cet exemple, la fonction n'est jamais appelée.

Mais la chose principale que je poste cette réponse pour essayer d'adresser est la suivante: "Appelez la fonction d'initialisation contre retourner cet appel de fonction". Il est incorrect de penser que vous «renvoyez l'appel de fonction» dans le deuxième exemple. Lorsque vous dites return init(), le premier init() est appelé et renvoie une valeur, puis votre fonction foo renvoie la valeur renvoyée par init().

Voilà la question que vous devriez vous poser. Est-ce que je veux juste foo pour appeler init, ou je veux foo pour appeler init et renvoyer la valeur que init renvoie? C'est la différence entre les deux (une fois que les autres erreurs sont supprimées).

Questions connexes