2017-07-18 64 views
0

我打一点点东西,这里是我迄今为止语法错误的JavaScript类

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 

我得到这个下面的错误代码,我不知道该怎么办才好= \:

/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

该错误是有,因为''||运营商期望一个布尔表达式其右侧,但发现了'for'代替。所以如果你试图从for循环中取出一个布尔值,可以用函数调用来替换它。 – Nisarg

回答

0

作为评价提到@Nisarg Shah,代码被期待值以下的||,不是几行代码来执行。

相反,您可以将这些代码行放入一个函数中并调用它以便在未提供值时提供默认值。

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

哇,就像一个魅力工作。非常感谢你:) – JaySeeCode

+0

也,谢谢你和@Nisarg沙阿澄清什么||。运营商的行为。 – JaySeeCode