2011-03-28 7 views
-3

Maintenant que j'ai d'autres questions, cette fonction ne fonctionne pas. Qu'est-ce qui ne va pas?Pourquoi ma fonction ne fonctionne-t-elle pas?

Weird JavaScript statement, what does it mean?

How to handle click event in javascript?

function myFunc() { 
    return 
    { 
     obj = this; 
    }; 
} 
+0

Que faites-vous? – canon

+1

Essayer de renvoyer un objet de ma fonction. –

+0

Je suis tenté de signaler la fermeture de cette question, mais plusieurs personnes y ont déjà répondu. Vous avez deux erreurs de syntaxe dans cette fonction. Corrigez les deux, et cela fonctionnera comme prévu. –

Répondre

6

Votre fonction ne fonctionne pas car JavaScript ajoute automatiquement des points-virgules.

Votre déclaration return est lu par JavaScript comme:

return; 
{ 
    obj: this; 
}; 

Vous devez mettre le { sur la même ligne que return:

return{ 
    obj: this; 
}; 

, ont besoin d'objets aussi être {name: value}.

+0

J'ai essayé mais ça ne fonctionne toujours pas. Je ne pense pas que vos affaires soient bonnes. –

+0

Vous avez raison sur les points-virgules, mais 'obj = this' n'est pas autorisé dans un constructeur d'objet. Seulement dans un bloc. Je pense que le '=' doit devenir un deux-points. –

+0

@Stack Guru: Cela devrait fonctionner maintenant. –

6

La syntaxe pour créer un objet littéral est:

{ foo: bar } 

pas

{ foo = bar } 

En outre, dans JavaScript une nouvelle ligne peut terminer une déclaration. En plaçant une nouvelle ligne après le return vous retournez undefined et le code littéral d'objet n'est jamais atteint. JSLint peut ramasser sur ce type de problème.

5

C'est à cause de l'injection de points-virgules.

Ce:

return 
    { myProperty: "hello world" }; 

est analysé comme ceci:

<< return statement >> 
<< pointless object literal expression >> 

Et pas comme:

<< return statement with return value expression >> 

Pour retourner une valeur d'objet, votre code doit ressembler à ceci:

return { 
    myProperty: "hello world" 
}; 

avec le { sur la même ligne quereturn.

+0

Mais j'ai un pare-feu pour l'empêcher, maintenant quoi? –

+2

Je pense que vous voulez dire l'insertion de point-virgule. –

+5

@Stack Guru, où puis-je obtenir ce pare-feu? –

Questions connexes