摘要:由于第一個(gè)循環(huán)中的變量是使用關(guān)鍵字聲明的,因此該值是全局的。檢查對(duì)象是否具有對(duì)內(nèi)存中相同位置的引用。在事件傳播期間,有三個(gè)階段捕獲,目標(biāo)和冒泡。當(dāng)我們傳遞參數(shù)時(shí),這與變量的不同。
1.下面代碼的輸出是什么?
for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1); } for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1); }
答案:
由于JavaScript中的事件執(zhí)行機(jī)制,setTimeout函數(shù)真正被執(zhí)行時(shí),循環(huán)已經(jīng)走完。
由于第一個(gè)循環(huán)中的變量i是使用var關(guān)鍵字聲明的,因此該值是全局的。 在循環(huán)期間,我們每次使用一元運(yùn)算符++都會(huì)將i的值增加1。
因此在第一個(gè)例子中,當(dāng)調(diào)用setTimeout函數(shù)時(shí),i已經(jīng)被賦值為3。
在第二個(gè)循環(huán)中,使用let關(guān)鍵字聲明變量i:使用let(和const)關(guān)鍵字聲明的變量是具有塊作用域的(塊是{}之間的任何東西)。
在每次迭代期間,i將被創(chuàng)建為一個(gè)新值,并且每個(gè)值都會(huì)存在于循環(huán)內(nèi)的塊級(jí)作用域。
2.下面代碼的輸出是什么?
const shape = { radius: 10, diameter() { return this.radius * 2 }, perimeter: () => 2 * Math.PI * this.radius }; shape.diameter(); shape.perimeter();
請(qǐng)注意,diameter是普通函數(shù),而perimeter是箭頭函數(shù)。
對(duì)于箭頭函數(shù),this關(guān)鍵字指向是它所在上下文(定義時(shí)的位置)的環(huán)境,與普通函數(shù)不同!
這意味著當(dāng)我們調(diào)用perimeter時(shí),它不是指向shape對(duì)象,而是指其定義時(shí)的環(huán)境(window)。沒(méi)有值radius屬性,返回undefined。
3.下面代碼的輸出是什么?
+true; !"Lydia";
一元加號(hào)會(huì)嘗試將boolean類型轉(zhuǎn)換為數(shù)字類型。 true被轉(zhuǎn)換為1,false被轉(zhuǎn)換為0。字符串"Lydia"是一個(gè)真值。 我們實(shí)際上要問(wèn)的是“這個(gè)真值是假的嗎?”。 這會(huì)返回false。
4.下面代碼的輸出是什么?
function checkAge(data) { if (data === { age: 18 }) { console.log("You are an adult!"); } else if (data == { age: 18 }) { console.log("You are still an adult."); } else { console.log(`Hmm.. You don"t have an age I guess`); } } checkAge({ age: 18 });
在比較相等性,原始類型通過(guò)它們的值進(jìn)行比較,而對(duì)象通過(guò)它們的引用進(jìn)行比較。JavaScript檢查對(duì)象是否具有對(duì)內(nèi)存中相同位置的引用。
我們作為參數(shù)傳遞的對(duì)象和我們用于檢查相等性的對(duì)象在內(nèi)存中位于不同位置,所以它們的引用是不同的。 這就是為什么{ age: 18 } ===
{ age: 18 }和 { age: 18 } == { age: 18 } 返回 false的原因。
5.下面代碼的輸出是什么?
function getAge(...args) { console.log(typeof args); } getAge(21);
擴(kuò)展運(yùn)算符(... args)返回一個(gè)帶參數(shù)的數(shù)組。 數(shù)組是一個(gè)對(duì)象,因此typeof args返回object
6.下面代碼的輸出是什么?
const obj = { 1: "a", 2: "b", 3: "c" }; const set = new Set([1, 2, 3, 4, 5]); obj.hasOwnProperty("1"); obj.hasOwnProperty(1); set.has("1"); set.has(1);
所有對(duì)象鍵(不包括Symbols)都會(huì)被存儲(chǔ)為字符串,即使你沒(méi)有給定字符串類型的鍵。
這就是為什么obj.hasOwnProperty("1")也返回true。 上面的說(shuō)法不適用于Set。
在我們的Set中沒(méi)有“1”:set.has("1")返回false。 它有數(shù)字類型1,set.has(1)返回true。
7.下面代碼的輸出是什么?
for (let i = 1; i < 5; i++) { if (i === 3) continue; console.log(i); }
如果某個(gè)條件返回true,則continue語(yǔ)句跳過(guò)迭代。
8.下面代碼的輸出是什么?
const a = {}; const b = { key: "b" }; const c = { key: "c" }; a[b] = 123; a[c] = 456; console.log(a[b]);
對(duì)象鍵自動(dòng)轉(zhuǎn)換為字符串。我們?cè)噲D將一個(gè)對(duì)象設(shè)置為對(duì)象a的鍵,其值為123。 但是,當(dāng)對(duì)象自動(dòng)轉(zhuǎn)換為字符串化時(shí),它變成了[Object
object]。 所以我們?cè)谶@里說(shuō)的是a["Object object"] = 123。 然后,我們可以嘗試再次做同樣的事情。
c對(duì)象同樣會(huì)發(fā)生隱式類型轉(zhuǎn)換。那么,a["Object object"] = 456。 然后,我們打印a[b],它實(shí)際上是a["Object
object"]。 我們將其設(shè)置為456,因此返回456。
9.下面代碼的輸出是什么?
Click here!
如果我們單擊p,我們會(huì)看到兩個(gè)日志:p和div。在事件傳播期間,有三個(gè)階段:捕獲,目標(biāo)和冒泡。
默認(rèn)情況下,事件處理程序在冒泡階段執(zhí)行(除非您將useCapture設(shè)置為true)。 它從最深的嵌套元素向外延伸。
10.下面這些值哪些是假值?
0; new Number(0); (""); (" "); new Boolean(false); undefined;
JavaScript中只有6個(gè)假值:undefined null NaN 0 "" (empty string) false
函數(shù)構(gòu)造函數(shù),如new Number和new
Boolean都是真值。
11.下面代碼的輸出是什么?
(() => { let x, y; try { throw new Error(); } catch (x) { (x = 1), (y = 2); console.log(x); } console.log(x); console.log(y); })();
catch塊接收參數(shù)x。當(dāng)我們傳遞參數(shù)時(shí),這與變量的x不同。這個(gè)變量x是屬于catch作用域的。
之后,我們將這個(gè)塊級(jí)作用域的變量設(shè)置為1,并設(shè)置變量y的值。 現(xiàn)在,我們打印塊級(jí)作用域的變量x,它等于1。
在catch塊之外,x仍然是undefined,而y是2。
當(dāng)我們想在catch塊之外的console.log(x)時(shí),它返回undefined,而y返回2。
12.setInterval方法的返回值什么?
setInterval(() => console.log("Hi"), 1000);
它返回一個(gè)唯一的id。 此id可用于使用clearInterval()函數(shù)清除該定時(shí)器
13.下面代碼的輸出是什么?
[..."Lydia"];
字符串是可迭代的。 擴(kuò)展運(yùn)算符將迭代的每個(gè)字符映射到一個(gè)元素。 ["L", "y", "d", "i", "a"]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104772.html
摘要:如何考察一個(gè)人是不是經(jīng)驗(yàn)豐富我們需要在問(wèn)答式的面試中,對(duì)其項(xiàng)目經(jīng)驗(yàn)進(jìn)行挖掘。如何設(shè)置筆試題現(xiàn)在網(wǎng)上有大量的面經(jīng)的存在,對(duì)于我們面試是一個(gè)巨大的挑戰(zhàn)。尊重應(yīng)聘者我們要尊重每一個(gè)來(lái)應(yīng)聘的人,不要輕視別人,或者故意刁難別人。 時(shí)光荏苒,2個(gè)月前,我才剛總結(jié)了如何應(yīng)對(duì)面試官,現(xiàn)在的我開(kāi)始總結(jié)如何面試別人了。笑哭.png 1.我們需要什么樣的人 招聘肯定要有標(biāo)準(zhǔn),這樣我們才能更快的找到我們需要的...
摘要:后續(xù)前端筆試題面試題記錄下小結(jié)我想說(shuō)的是在找工作期間,肯定有自己發(fā)揮不好,或者不會(huì)的問(wèn)題,一定要在晚上的時(shí)候自己再學(xué)習(xí)總結(jié)一下,在一個(gè)問(wèn)題上面盡量不要栽倒兩次,學(xué)到了的才是自己的。 前言 過(guò)完元宵,就到上海找了波工作,現(xiàn)在已經(jīng)入職好了,蹭波熱點(diǎn),寫一波面試記錄,內(nèi)容包含筆試題和面試題,還有一些沒(méi)有寫進(jìn)來(lái),準(zhǔn)備再開(kāi)一篇,許久沒(méi)寫了,寫的確實(shí)有些慢。如果喜歡的話可以點(diǎn)波贊,或者關(guān)注一下,希...
摘要:后續(xù)前端筆試題面試題記錄下小結(jié)我想說(shuō)的是在找工作期間,肯定有自己發(fā)揮不好,或者不會(huì)的問(wèn)題,一定要在晚上的時(shí)候自己再學(xué)習(xí)總結(jié)一下,在一個(gè)問(wèn)題上面盡量不要栽倒兩次,學(xué)到了的才是自己的。 前言 過(guò)完元宵,就到上海找了波工作,現(xiàn)在已經(jīng)入職好了,蹭波熱點(diǎn),寫一波面試記錄,內(nèi)容包含筆試題和面試題,還有一些沒(méi)有寫進(jìn)來(lái),準(zhǔn)備再開(kāi)一篇,許久沒(méi)寫了,寫的確實(shí)有些慢。如果喜歡的話可以點(diǎn)波贊,或者關(guān)注一下,希...
閱讀 1715·2021-11-18 10:02
閱讀 2227·2021-11-15 11:38
閱讀 2678·2019-08-30 15:52
閱讀 2201·2019-08-29 14:04
閱讀 3240·2019-08-29 12:29
閱讀 2095·2019-08-26 11:44
閱讀 1003·2019-08-26 10:28
閱讀 842·2019-08-23 18:37