<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          11個棘手的JavaScript面試題

          共 2764字,需瀏覽 6分鐘

           ·

          2021-01-19 10:05

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

          在本文中,將分享11個Javascript技巧面試問。這些題看起來很簡單,但對答案卻要三思而后行,因為它很容易做錯。

          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ù)(一秒鐘對于計算機來說是很長的時間)。“ i”變量是使用“ var”關(guān)鍵字聲明的,因此它是全局變量。當大約一秒鐘后調(diào)用setTimeout函數(shù)時,“ i”的值為5。
          在案例2中,使用'let'關(guān)鍵字聲明了'i'變量,因此它是塊作用域的。在每次迭代期間,“ i”變量將具有一個新值。

          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)建的新的空對象。但是,如果您不添加new關(guān)鍵字,則它是指窗口全局對象。

          3、JavaScript 控制

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

          可能的結(jié)果:

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

          解答:C

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

          在這種情況下,JavaScript會將數(shù)字10轉(zhuǎn)換為有意義的字符串并返回值。在添加數(shù)字類型(10)和字符串類型('20')的過程中,數(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}`;

          解答:

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

          5、Rest參數(shù)

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

          可能的結(jié)果:

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

          解答:D

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

          6、“ var”變量

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

          可能的結(jié)果:

          A:10
          B:20
          C:語法錯誤

          解答:B

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

          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”語句跳過迭代,在這種情況下,如果“ 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:語法錯誤

          解答:

          如果你為數(shù)組中的索引設置的值超過了數(shù)組的長度,則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:錯誤,正確,錯誤,錯誤,正確,錯誤
          B:錯誤,正確,錯誤,錯誤,錯誤,真實

          解答:A

          在JavaScript中,“ !!”?運算符將一個值轉(zhuǎn)換為其對應的布爾值。
          • 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ù)中不返回值時,則返回“ undefined”。在這種情況下,對于數(shù)組中的每個元素,map函數(shù)都會返回“ undefined”,并且結(jié)果集合是一個充滿“ undefined”的數(shù)組。

          11、導入&&導出

          輸出是什么?
          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:錯誤

          解答:D

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

          固定:

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

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99综合视频一区 | 狠狠色网站 | 国产稀缺精品盗摄盗拍 | 欧美性爱视频精品 | www.爱搞搞 |