2017-07-18 1 views
0

Je joue avec un petit quelque chose et voici le code que j'ai jusqu'à présentErreur de syntaxe dans JavaScript classe

class Person { 
constructor(sex, name, age) { 
    this.sex = sex || (
     for (var i = 0; i < 1; i++) { 
      let sexes = ['f', 'm'], 
       picker = Math.round(Math.random()); 
      picker === 1 ? this.sex = sexes[0] : this.sex = sexes[1]; 
     }); 
    this.name = name || (
     let names = ["Jane Doe", "Jon Doe"]; 
     sex === 'f' ? this.name = names[0] : this.name = names[1];); 
    this.age = age || (
     let rand = Math.floor(Math.random() * (50 - 20 + 1) + 20); 
     age = rand;) ; 
} }//end class 

Je reçois cette erreur suivante et je ne suis pas sûr de quoi faire à ce sujet = \:

/Users/Username/Desktop/code/file.js:23 
      for (var i = 0; i < 1; i++) { 
      ^^^ 
SyntaxError: Unexpected token for 
    at createScript (vm.js:74:10) 
    at Object.runInThisContext (vm.js:116:10) 
    at Module._compile (module.js:533:28) 
    at Object.Module._extensions..js (module.js:580:10) 
    at Module.load (module.js:503:32) 
    at tryModuleLoad (module.js:466:12) 
    at Function.Module._load (module.js:458:3) 
    at Function.Module.runMain (module.js:605:10) 
    at startup (bootstrap_node.js:158:16) 
    at bootstrap_node.js:575:3 
+2

L'erreur est là parce que l'opérateur '' || attend une expression booléenne à sa droite, mais trouve la 'for' place. Donc, si vous essayez d'obtenir un booléen de cette boucle, remplacez-le par un appel de fonction. – Nisarg

Répondre

0

Comme @Nisarg Shah mentionné dans les commentaires, le code prévoit une valeur après la ||, pas quelques lignes de code à exécuter. Au lieu de cela, vous pourriez mettre ces lignes de code dans une fonction et l'appeler afin de fournir la valeur par défaut lorsqu'aucune valeur n'est fournie.

class Person { 
 
    constructor(sex, name, age) { 
 
    function getRandomSex() { 
 
     for (var i = 0; i < 1; i++) { 
 
     let sexes = ['f', 'm'], 
 
      picker = Math.round(Math.random()); 
 
     return picker === 1 ? sexes[0] : sexes[1]; 
 
     } 
 
    } 
 

 
    function getName(sex) { 
 
     let names = ["Jane Doe", "Jon Doe"]; 
 
     return sex === 'f' ? names[0] : names[1]; 
 
    } 
 

 
    function getRandomAge() { 
 
     return Math.floor(Math.random() * (50 - 20 + 1) + 20); 
 
    } 
 
    this.sex = sex || getRandomSex(); 
 
    this.name = name || getName(this.sex); 
 
    this.age = age || getRandomAge(); 
 
    } 
 
} //end class 
 

 
var me = new Person(); 
 
console.log(me);

+0

wow, ça a marché comme un charme. merci beaucoup :) – JaySeeCode

+0

aussi, merci et @Nisarg Shah pour la clarification sur ce que le || le comportement de l'opérateur. – JaySeeCode