首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >选择篇(062)-下面代码的输出是什么?

选择篇(062)-下面代码的输出是什么?

作者头像
齐丶先丶森
发布2022-05-12 21:43:45
发布2022-05-12 21:43:45
4720
举报
文章被收录于专栏:前端面试秘籍前端面试秘籍
代码语言:javascript
复制
(() => {
  let x = (y = 10);
})();

console.log(typeof x);
console.log(typeof y);
  • A: "undefined", "number"
  • B: "number", "number"
  • C: "object", "number"
  • D: "number", "undefined"
答案: A

let x = y = 10; 是下面这个表达式的缩写:

代码语言:javascript
复制
y = 10;
let x = y;

我们设定y等于10时,我们实际上增加了一个属性y给全局对象(浏览器里的window, Nodejs里的global)。在浏览器中, window.y等于10.

然后我们声明了变量x等于y,也是10.但变量是使用 let声明的,它只作用于 块级作用域, 仅在声明它的块中有效;就是案例中的立即调用表达式(IIFE)。使用typeof操作符时, 操作值 x没有被定义:因为我们在x声明块的外部,无法调用它。这就意味着x未定义。未分配或是未声明的变量类型为"undefined". console.log(typeof x)返回"undefined".

而我们创建了全局变量y,并且设定y等于10.这个值在我们的代码各处都访问的到。 y已经被定义了,而且有一个"number"类型的值。 console.log(typeof y)返回"number".

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 答案: A
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档