Skip to content

哪一个是正确的?

Posted on:2021年7月3日 at 22:07
const bird = {
  size: "small",
};

const mouse = {
  name: "Mickey",
  small: true,
};

在 JavaScript 中,所有对象的 keys 都是字符串(除非对象是 Symbol)。尽管我们可能不会定义它们为字符串,但它们在底层总会被转换为字符串。 当我们使用括号语法时([]),JavaScript 会解释(或者 unboxes)语句。它首先看到第一个开始括号 [ 并继续前进直到找到结束括号 ]。只有这样,它才会计算语句的值。 mouse[bird.size]:首先计算 bird.size,这会得到 smallmouse["small"] 返回 true。 然后使用点语法的话,上面这一切都不会发生。mouse 没有 bird 这个 key,这也就意味着 mouse.birdundefined。然后当我们使用点语法 mouse.bird.size 时,因为 mouse.birdundefined,这也就变成了 undefined.size。这个行为是无效的,并且会抛出一个错误类似 Cannot read property "size" of undefined

原文转自:https://fe.ecool.fun/topic/c9e06422-43a4-4dc7-8a07-35b878896123