在Javascript中设置后,类变量仍未定义

时间:2017-02-18 09:41:12

标签: javascript class variables

我对Javascript相对较新,我似乎无法弄清楚为什么sessionToken没有设置。当我调试console.log()时,即使我刚刚设置它,我仍然未定义。我做错了什么?

class Service extends Backend {

  initialize(token) {
    if (!_.isNull(token) && _.isUndefined(token.sessionToken)) {
      throw new Error('Token missing');
    }
    this.sessionToken = _.isNull(token)
      ? null
      : token.sessionToken.access_token;

    console.log(this.sessionToken);

    this.API_BASE_URL = CONFIG.backend.serviceLocal
      ? CONFIG.SERVICE.local.url
      : CONFIG.SERVICE.remote.url;

    this.CLIENT_ID = CONFIG.backend.serviceLocal
      ? CONFIG.SERVICE.local.client_id
      : CONFIG.SERVICE.remote.client_id;
  }
}

2 个答案:

答案 0 :(得分:0)

this.sessionToken = _.isNull(token)
  ? null
  : token.sessionToken.access_token;
如在Bulent Vural的评论中所说,你只是检查令牌是否存在,然后假设如果它也存在access_token。似乎情况并非如此,并且您未定义。我嘲笑了你的代码here,如果你没有通过access_token,它确实会因未定义而失败。也许是时候写一些单元测试? :)

答案 1 :(得分:0)

好像你只关心access_token。如果没有定义,为什么不扔?

尝试编写这样的函数:

initialize(token) {

  if (!(token && token.sessionToken && token.sessionToken.access_token)) {
    throw new Error('Access token missing');
  }

  this.sessionToken = token.sessionToken.access_token;
  console.log(this.sessionToken);

}