ES6,Javascript。在解构赋值中声明const,undefined

时间:2018-05-08 08:42:18

标签: javascript reactjs ecmascript-6 destructor

const Profile = () => (
  <Data data={CURRENT_PLAYER_DATA}>
    {({
      data: {
        currentPlayer: { playerProfile }
      }
    }) => <div>{playerProfile && playerProfile.name}</div>}
  </Data>
);

通过上面的代码,我得到了:playerProfile of undefined!

const Profile = () => (
  <Data data={CURRENT_PLAYER_DATA}>
    {({ data: { currentPlayer: { playerProfile = {} } = {} } = {} }) => (
      <div>{playerProfile && playerProfile.name}</div>
    )}
  </Data>
);

上面的代码可行,但我不知道为什么。

我还需要避免类似的事情:

playerProfile && playerProfile.name

如何很好地理解这种流程?

1 个答案:

答案 0 :(得分:0)

您的currentPlayer属性为undefined,这意味着您实际上正在执行

var playerProfile = data.currentPlayer.playerProfile;

哪个会破坏,因为data.currentPlayer不存在。 (是undefined

在第二个示例中,您要为currentPlayer创建默认值,这意味着currentPlayer如果undefined将是{}