You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Gender类时触发Uncaught SyntaxError错误,寻求解决方案

修复你的Gender类语法错误

我帮你找出代码里的问题啦,你的Gender类触发Uncaught SyntaxError: Unexpected token主要是几个语法规范和逻辑结构的问题,下面是修正后的实现方案,再一步步解释错误点:

修正后的代码(推荐实现)

假设你外部已经定义了gender字典(比如const gender = {152: "M", 153: "F"}),我们把性别判断逻辑放到类的方法内部,或者在构造函数里预存结果:

方案1:方法内部实时判断性别

// 外部的性别字典,假设已经定义
const gender = {152: "M", 153: "F"};

class Gender {
  constructor(userId) {
    // 把用户ID存到实例上,供后续方法使用
    this.userId = userId;
  }

  // 返回 his/her
  hisher() {
    const userGender = gender[this.userId];
    // 可以加个默认值处理未知性别情况
    return userGender === "M" ? "his" : userGender === "F" ? "her" : "their";
  }

  // 返回 him/her
  himher() {
    const userGender = gender[this.userId];
    return userGender === "M" ? "him" : userGender === "F" ? "her" : "them";
  }

  // 返回 he/she
  heshe() {
    const userGender = gender[this.userId];
    return userGender === "M" ? "he" : userGender === "F" ? "she" : "they";
  }
}

// 使用示例
const user1Gender = new Gender(152);
console.log(user1Gender.hisher()); // 输出 "his"
console.log(user1Gender.himher()); // 输出 "him"
console.log(user1Gender.heshe()); // 输出 "he"

方案2:构造函数预存结果(性能更优,适合多次调用)

const gender = {152: "M", 153: "F"};

class Gender {
  constructor(userId) {
    const userGender = gender[userId];
    // 初始化时就把所有指代词存好,后续方法直接返回
    this._hisher = userGender === "M" ? "his" : userGender === "F" ? "her" : "their";
    this._himher = userGender === "M" ? "him" : userGender === "F" ? "her" : "them";
    this._heshe = userGender === "M" ? "he" : userGender === "F" ? "she" : "they";
  }

  hisher() {
    return this._hisher;
  }

  himher() {
    return this._himher;
  }

  heshe() {
    return this._heshe;
  }
}

// 使用示例
const user2Gender = new Gender(153);
console.log(user2Gender.hisher()); // 输出 "her"

你的原始代码错误点解析

  1. 类体不能直接放执行代码:你把gend = gender[val];和if判断直接写在类的主体里了,类的主体只能放方法定义、属性声明,不能直接写执行语句块。
  2. 构造函数语法错误:构造函数结束后你用了分号;,类的语法中,构造函数和后续方法之间不需要分号,直接换行即可。
  3. 方法定义位置错误:你在if块里定义hisher()等方法,这不符合类的语法规范,类方法需要直接声明在类体中,逻辑判断要放到方法内部或构造函数里。
  4. 变量引用错误:你直接用val访问构造函数的参数,需要通过this.val(或者像我上面那样用this.userId)把参数挂载到实例上,才能在其他方法里访问。
  5. 拼写错误:代码里的retur...是return的拼写错误,这也会导致语法问题。

内容的提问来源于stack exchange,提问作者Rafi Ki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:50:16