如果变量未定义,则有条件地执行分支

时间:2019-01-31 11:54:00

标签: javascript reactjs

我有一段代码,变量有时以undefined的形式出现,但我需要验证该值是否为undefined才能通过代码执行

我提供的验证不能解决问题

   _getKeycodeScans = (data) => this.props.getKeycodeScans(data.keycode.uid, 1).then(() => {
        this.setState({detailsModalVisible: true, homeDetails: data});
    }).catch(error => {
        debugger
        const { serverError } = JSON.parse(error.message);
        this.setState({ serverError, loading: false });
    });

    _openDetailsModal = (data) => () => Promise.all([
        console.log('&&&&&&&&&&&&&&&&&&&&**********&&&&&&&&&&&&&&&&&&&&&'),
        console.log(data),

        this._getKeycodeScans(data),
        this._getKeycodeImageDataUrl(data),
        this._getHomes(data)
    ]);

当_openDetailsModal被命中并调用内部函数时,uid未定义。 我收到错误消息:TypeError: Cannot read property 'uid' of undefined。 当uid未定义时,我实际上不需要数据

1 个答案:

答案 0 :(得分:0)

如果您的目标是仅在未定义data.keycode.uid的情况下继续执行脚本,则可以:

_getKeycodeScans = (data) => {
  if(!data.keycode || data.keycode.uid === undefined) {
    return;
  }
  return this.props.getKeycodeScans(data.keycode.uid, 1).then(() => {
    this.setState({detailsModalVisible: true, homeDetails: data});
  }).catch(error => {
    const { serverError } = JSON.parse(error.message);
    this.setState({ serverError, loading: false });
  });
}