前端每日一題#16

關(guān)注公眾號 前端人,回復(fù)“加群”
添加無廣告優(yōu)質(zhì)學(xué)習(xí)群
昨日題目
下面代碼的輸出是什么?
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中的事件執(zhí)行機制,setTimeout函數(shù)真正被執(zhí)行時,循環(huán)已經(jīng)走完。 由于第一個循環(huán)中的變量i是使用var關(guān)鍵字聲明的,因此該值是全局的。 在循環(huán)期間,我們每次使用一元運算符++都會將i的值增加1。 因此在第一個例子中,當調(diào)用setTimeout函數(shù)時,i已經(jīng)被賦值為3。 在第二個循環(huán)中,使用let關(guān)鍵字聲明變量i: 使用let(和const)關(guān)鍵字聲明的變量是具有塊作用域的(塊是{}之間的任何東西)。在每次迭代期間,i將被創(chuàng)建為一個新值,并且每個值都會存在于循環(huán)內(nèi)的塊級作用域。
今日題目
下面代碼的輸出是什么?
var number = 5;
var obj = {
number: 3,
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
玩法介紹
評論區(qū)給出你的答案,并且點個在看,每天的每日一題答案由下一天給出,歡迎參與每日一題,一周連續(xù)答對5題者,周六任性的鬼哥抽取送前端書籍一本(根據(jù)中獎?wù)呦矚g自行選擇一本)
題庫小程序
最后
大家記得關(guān)注公眾號后,置頂公眾號,才能第一時間接收前端每日一題的文章推送
回復(fù) 資料包領(lǐng)取我整理的進階資料包回復(fù) 加群,加入前端進階群console.log("文章點贊===文章點在看===置頂公眾號")Bug離我更遠了,下班離我更近了

評論
圖片
表情
