1. 11個(gè)棘手的JavaScript面試題

        共 2764字,需瀏覽 6分鐘

         ·

        2021-01-19 10:05

        英文 |?https://medium.com/javascript-in-plain-english/do-you-know-javascript-1f2b44461333
        翻譯 | web前端開(kāi)發(fā)(ID:web_qdkf)

        在本文中,將分享11個(gè)Javascript技巧面試問(wèn)。這些題看起來(lái)很簡(jiǎn)單,但對(duì)答案卻要三思而后行,因?yàn)樗苋菀鬃鲥e(cuò)。

        1、變量

        輸出是什么?

        案例1

        for(var i = 0; i <5; i ++){ setTimeout(()=> console.log(i),1); }
        A:0 1 2 3 4
        B:5 5 5 5 5

        解答:B


        案例2
        for (let i = 0; i < 5; i++) { setTimeout(() => console.log(i), 1);}
        A:0 1 2 3 4
        B:5 5 5 5 5
        C:0 1 2 3 4
        解答:C
        解析:
        在案例1中,在執(zhí)行循環(huán)后調(diào)用setTimeout回調(diào)函數(shù)(一秒鐘對(duì)于計(jì)算機(jī)來(lái)說(shuō)是很長(zhǎng)的時(shí)間)?!?i”變量是使用“ var”關(guān)鍵字聲明的,因此它是全局變量。當(dāng)大約一秒鐘后調(diào)用setTimeout函數(shù)時(shí),“ i”的值為5。
        在案例2中,使用'let'關(guān)鍵字聲明了'i'變量,因此它是塊作用域的。在每次迭代期間,“ i”變量將具有一個(gè)新值。

        2、“new”關(guān)鍵字

        輸出是什么?
        function User(username, password) {  this.username= username;  this.password= password;}

        案例1

        const kesk = new User('kesk', '12345');kesk;
        A:{用戶名:“ kesk”,密碼:“ 12345”}
        B:未定義
        解答:A

        案例2
        const kesk2 = User('kesk','12345'); kesk2;
        A:{用戶名:“ kesk2”,密碼:“ 12345”}
        B:未定義
        解答:B
        解析:
        如果我們使用'new'關(guān)鍵字,則指的是我們創(chuàng)建的新的空對(duì)象。但是,如果您不添加new關(guān)鍵字,則它是指窗口全局對(duì)象。

        3、JavaScript 控制

        輸出是什么?
        function sum(n1, n2) { return n1+ n2;}sum(10, '20');

        可能的結(jié)果:

        A:NaN
        B:TypeError
        C:“ 1020”
        D:20

        解答:C

        JavaScript是一種動(dòng)態(tài)類型化的語(yǔ)言,因此如有必要,值會(huì)自動(dòng)轉(zhuǎn)換為另一種類型。

        在這種情況下,JavaScript會(huì)將數(shù)字10轉(zhuǎn)換為有意義的字符串并返回值。在添加數(shù)字類型(10)和字符串類型('20')的過(guò)程中,數(shù)字被視為類似于“ Hello” +“ world!”的字符串。(“ Hello world!”),因此結(jié)果為“ 1020”。

        4、模板文字

        輸出是什么?
        function getCar(brand, model) {  console.log(brand);  console.log(model);}const brand = 'Ford';const model = 'shelby';getCar`The brand of your car is ${brand} and the model is{model}`;

        解答:

        當(dāng)我們使用帶標(biāo)簽的模板文字時(shí),第一個(gè)參數(shù)的值是一個(gè)字符串值數(shù)組,其余參數(shù)獲取傳遞的表達(dá)式的值。

        5、Rest參數(shù)

        輸出是什么?
        function getCar(...args) { console.log(typeof args);}getCar('Ford', 'Shelby');

        可能的結(jié)果:

        A:“數(shù)組”
        B:“數(shù)字”
        C:“ NaN”
        D:“對(duì)象”

        解答:D

        rest參數(shù)(…args)將所有剩余參數(shù)“收集”到一個(gè)數(shù)組中。而且,數(shù)組的類型是什么?它是一個(gè)對(duì)象,因此typeof args返回“ object”。

        6、“ var”變量

        輸出是什么?
        var v1 = 10; var v1 = 20;console.log(v1);

        可能的結(jié)果:

        A:10
        B:20
        C:語(yǔ)法錯(cuò)誤

        解答:B

        我們可以使用'var'關(guān)鍵字聲明多個(gè)具有相同名稱的變量。在這種情況下,變量將保存最新值。

        7、?Continue 聲明

        輸出是什么?
        for(let i =1; i< 10; i++){ if(i === 5) continue; console.log(i);}

        可能的結(jié)果:

        A:1 2 3 4 5 6 7 8 9 10
        B:1 2 3 4 6 7 8 9 10
        C:1 2 3 4

        解答:B

        如果特定條件返回true,則“ continue”語(yǔ)句跳過(guò)迭代,在這種情況下,如果“ i”的值為5。

        8、Array

        輸出是什么?
        const anArray = [1,2,3,4,5]; anArray [10] = 100; console.log(anArray);

        可能的結(jié)果:

        A:[1、2、3、4、5、100]
        B:[1、2、3、4、5,空x 5,100]
        D:語(yǔ)法錯(cuò)誤

        解答:

        如果你為數(shù)組中的索引設(shè)置的值超過(guò)了數(shù)組的長(zhǎng)度,則JavaScript將創(chuàng)建其中包含未定義值的“空數(shù)”。

        9、False&&True的值

        輸出是什么?
        console.log(!! null); console.log(!! 1); console.log(!! 0); console.log(!!''); console.log(!! true); console.log(!! false);

        可能的結(jié)果:

        A:錯(cuò)誤,正確,錯(cuò)誤,錯(cuò)誤,正確,錯(cuò)誤
        B:錯(cuò)誤,正確,錯(cuò)誤,錯(cuò)誤,錯(cuò)誤,真實(shí)

        解答:A

        在JavaScript中,“ !!”?運(yùn)算符將一個(gè)值轉(zhuǎn)換為其對(duì)應(yīng)的布爾值。
        • null是虛假的,!null返回true,!true返回false。

        • !1為假,!false為真。

        • !0為true,!true為false。

        • “”是虛假的!!”返回true,!true返回false。

        • !true為false,!false為true。

        • !false為true,!true為false。

        10、Map 函數(shù)

        輸出是什么?
        [1, 2, 3, 4, 5].map( n => {  if (n < 10) return;  return n * 2;});

        可能的結(jié)果:

        A:[null,null,null,null,null]
        B:[undefined,undefined,undefined,undefined,undefined]
        C:[]

        解答:B

        在此示例中,如果n <10,則不返回值,而在函數(shù)中不返回值時(shí),則返回“ undefined”。在這種情況下,對(duì)于數(shù)組中的每個(gè)元素,map函數(shù)都會(huì)返回“ undefined”,并且結(jié)果集合是一個(gè)充滿“ undefined”的數(shù)組。

        11、導(dǎo)入&&導(dǎo)出

        輸出是什么?
        counter.js
        let counter = 1;export default counter;
        main.js
        import myCounter from './utilsFile';myCounter += 1;console.log(myCounter);

        可能的結(jié)果:

        A:2
        B:1
        C:NaN
        D:錯(cuò)誤

        解答:D

        ES6模塊的導(dǎo)入是只讀的。只有導(dǎo)出它們的模塊才能更改其值。

        固定:

        counter.js
        let counter = 1;export function incrementCounter() { counter++;}
        main.js
        import incrementCounter’./utilsFile’;console.log(counter); // 1incCounter();console.log(counter); // 2
        感謝你的閱讀!
        瀏覽 65
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 免费无码婬片A片AAA毛片96 | 伸进她的小内裤疯狂揉摸的视频 | 亚洲中文在线天堂 | 午夜成年人视频 | 黄色片无码 |