前端每日一题#16

前端人

共 2286字,需浏览 5分钟

 · 2021-03-20


关注公众号 前端人,回复“加群

添加无广告优质学习群

日题目

下面代码的输出是什么?


 for (var i = 0; i < 3; i++) {
   setTimeout(() => console.log(i), 1);
 }

 for (let i = 0; i < 3; i++) {
   setTimeout(() => console.log(i), 1);
 }

A: 0 1 2 和 0 1 2

B: 0 1 2 和 3 3 3

C: 3 3 3 和 0 1 2

答案:C

  • 由于JavaScript中的事件执行机制,setTimeout函数真正被执行时,循环已经走完。
  • 由于第一个循环中的变量i是使用var关键字声明的,因此该值是全局的。
  • 在循环期间,我们每次使用一元运算符++都会将i的值增加1。
  • 因此在第一个例子中,当调用setTimeout函数时,i已经被赋值为3。
  • 在第二个循环中,使用let关键字声明变量i:
  • 使用let(和const)关键字声明的变量是具有块作用域的(块是{}之间的任何东西)。在每次迭代期间,i将被创建为一个新值,并且每个值都会存在于循环内的块级作用域。

今日题目

下面代码的输出是什么?

var number = 5;
var obj = {
    number3,
    fn1: (function ({
        var number;
        this.number *= 2;
        number = number * 2;
        number = 3;
        return function ({
            var num = this.number;
            this.number *= 2;
            console.log(num);
            number *= 3;
            console.log(number);
        }
    })()
}
var fn1 = obj.fn1;
fn1.call(null);
obj.fn1();
console.log(window.number);

A: 10,9,3,27,20

B: 6,NaN,5

C: 5,NaN,6

D: 10,9,5

玩法介绍

评论区给出你的答案,并且点个在看每天的每日一题答案由下一天给出,欢迎参与每日一题,一周连续答对5题者,周六任性的鬼哥抽取送前端书籍一本(根据中奖者喜欢自行选择一本

题库小程序

最后

大家记得关注公众号后,置顶公众号,才能第一时间接收前端每日一题的文章推送

  • 回复资料包领取我整理的进阶资料包
  • 回复加群,加入前端进阶群
  • console.log("点赞===看===置顶公众号")
  • Bug离我更远了,下班离我更近了


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报