2012-08-15 3 views
0

Je suis nouveau sur javascript. J'ai deux documents - un ancien et un nouveau - que je compare. Cependant, j'obtiens une erreur de syntaxe quelque part dans le code ci-dessous.
Quelque part ici, mon code explose. L'erreur dit "l'expression n'évalue pas à une fonction." Toutes les idées syntaxiques de l'endroit où j'écris une déclaration incorrecte?Syntaxe Javascript - qu'est-ce que je fais mal?

if(userCtx.name != oldDoc.Document.attributeA) { 
     for (var key in oldDoc.Document) 
     { 
      if(newdoc.Document.hasOwnProperty('key') 
      { 
      if(oldDoc.Document[key] != newDoc.Document[key]) 
      { 
       if(key === 'attributeB') 
       { 
       return; 
       } 
       else 
       { 
       throw(forbidden: 'Only admins may change this field.') 
       } 
      } 
      } 
     } 
    } 
+0

Il vous manque un ")" après hasOwnProperty ("key") – Hacknightly

+0

De plus, vlad fait un bon point au sujet de votre instruction "throw" ci-dessous. – Hacknightly

Répondre

3

Pour lancer un objet littéral, remplacer les parenthèses avec des accolades:

throw { 
    forbidden: 'Only admins may change this field.' 
}; 
7
if(newdoc.Document.hasOwnProperty('key') <-- I am missing a) 
+0

Oui! sensationnel. Merci. Je reçois toujours l'erreur, donc je suppose qu'il y a quelque chose d'autre aussi ... – Skitterm

0

Le code affiché à l'intérieur d'une définition de fonction? J'ai vu cette erreur lors de la définition des fonctions qui sont passées en arguments à quelque chose d'autre, et oublié d'envelopper la fonction entre parenthèses. Par exemple:
"compare": "function(docA, docB) { ... }"
devrait être:
"compare": "(function(docA, docB) { ... })"

0

Et peut-être un plus ... Est-ce dans une fonction? Sinon vous pourriez avoir une erreur sur le return;

Questions connexes