yisainan / web-interview

我是齐丶先丶森,收集整理全网面试题及面试技巧,旨在帮助前端工程师们找到一份好工作!更多详见公众号「前端面试秘籍」
MIT License
2.64k stars 505 forks source link

[选择题] 58.(单选题)输出什么 #1036

Open qiilee opened 4 years ago

qiilee commented 4 years ago
const colorConfig = {
  red: true,
  blue: false,
  green: true,
  black: true,
  yellow: false
};

const colors = ["pink", "red", "blue"];

console.log(colorConfig.colors[1]);
A:true
B: false
C: undefined
D: TypeError

答案:D

解析:

在 JavaScript 中,我们有两种访问对象属性的方法:括号表示法或点表示法。在此示例中,我们使用点表示法(colorConfig.colors) 代替括号表示法(colorConfig["colors"]) 。

使用点表示法,JavaScript 会尝试使用该确切名称在对象 上查找属性。在此示例中,JavaScript 尝试在 colorconfig 对象上找到名为 colors 的属性。没有名为"colors"的属性,因此返回"undefined"。然后,我们尝试使用[1]访问第一个元 素 的 值 。 我 们 无 法 对 未 定 义 的 值执 行 此 操 作 , 因此会抛出 Cannot read property '1' of undefined。JavaScript 解释(或取消装箱)语句。当我们使用方括号表示法时,它会看到第一个左方括号[并一直进行下去, 直到找到右方括号]。只有这样,它才会评估该语句。 如果我们使用了 colorConfig [colors [1]],它将返回 colorConfig 对象上 red 属性的值。