測試javascript基礎(chǔ)能拿多少分

測試一下你的Javascript基礎(chǔ)能拿下多少分

非面試題,考察的都是js很基礎(chǔ)的東西

l 填空題(第題1分)

  1. Js數(shù)據(jù)類型:_______ 、_______ 、_______ 、_______ 、_______ 、______ 、_______。

  2. ES6 新增數(shù)據(jù)類型______表示____________的值。

  3. 聲明變量使用關(guān)鍵字______ 、______。

  4. 聲明常量使用關(guān)鍵字______,常量在聲明時(shí)必須______。

  5. 聲明字符串類型的數(shù)據(jù)時(shí),可以使用符號______ 、______ 、______ 。

  6. 模板字符串可以______行 , 如果要在模板字符串中引用變量使用______。

  7. 字符串表示真假值:______,數(shù)值表示真假值:______ 。

  8. "+"符號在__________________作字符串拼接符使用。

  9. typeof 關(guān)鍵字在檢查數(shù)組與對象類型的數(shù)據(jù)時(shí)返回____________,檢查函數(shù)時(shí)返回____________。

  10. 類型轉(zhuǎn)換有兩種分別是:______,______。將字符串強(qiáng)制轉(zhuǎn)換為數(shù)字類型可以使用 ______、______ 、______ 。

  11. 寫出的6個(gè)內(nèi)置對象 ______、______、______ 、______ 、______ 、______ 。

  12. 數(shù)組中______從0開始計(jì)數(shù),______從1開始計(jì)數(shù),______屬性表示數(shù)組的長度。

  13. JSON.stringify() 的作用:____________, JSON.parse() 的作用是:____________。

  14. 正則表達(dá)式中元字符 \D表示匹配____________,\d表示匹配____________。

  15. ____________獲取當(dāng)前節(jié)點(diǎn)的父級節(jié)點(diǎn),____________獲取當(dāng)前節(jié)點(diǎn)的祖先節(jié)點(diǎn)。

  16. DOM中唯一操作cookie的屬性是____________。

  17. 實(shí)現(xiàn)綁定事件的兩個(gè)函數(shù)分別是:_________________、___________________。

  18. element.offsetLeft 計(jì)算元素到__________,_________計(jì)算元素到頂部的距離。

  19. 事件冒泡是___________將事件層層傳遞,而___________是從外向內(nèi)傳遞事件。普通事件只支持___________,捕獲與冒泡不能______________。

  20. 刪除cookie 可以將__________________。

  21. 克隆元素使用___________。接收一個(gè)布爾值的參數(shù),如果為____________則該節(jié)點(diǎn)的所有后代節(jié)點(diǎn)也都會被克隆,如果為____________則只克隆該節(jié)點(diǎn)本身。

  22. 定時(shí)器有兩種:_________、_________。定時(shí)器代碼不會____________主線程。

  23. 面向?qū)ο笕筇卣鳎篲_____、______、______。

  24. ES6繼承使用關(guān)鍵字_________,在子類構(gòu)造方法中必須首先調(diào)用_______________,實(shí)例化子類會首先_______________。

  25. ____________返回 0 ~ 1 之間的隨機(jī)數(shù)。

  26. 在數(shù)組與對象的數(shù)據(jù)操作中,數(shù)據(jù) B 復(fù)制了數(shù)據(jù) A 當(dāng)修改數(shù)據(jù) B 時(shí)不影響數(shù)據(jù) A,叫作____________。

  27. p.name 訪問對象成員使用 [] 方括號語法可以寫成_______________。

  28. 函數(shù)中 return 關(guān)鍵字的作用:_______________________________________。

  29. 表達(dá)式 200 + 2 * 0 - true 的結(jié)果是____________。

  30. 阻止事件冒泡可以使用_________、_________。

l 選擇題(每題 1 分)

  1. 循環(huán)語句中___終止當(dāng)前離它最近的循環(huán),___結(jié)束本輪循環(huán)繼續(xù)下一次循環(huán)。
    A: breack
    B: continue
    C: catch
    D: boolean

  2. this指向: ______ 。
    A: 在函數(shù)中,this 表示全局對象。
    B: 在方法中,this 該方法所屬的對象。
    C: 如果單獨(dú)使用表示全局對象。
    D: 在事件中,this 表示接收事件的元素。
    E: setTimeout時(shí)this 指向全局對象使用箭頭函數(shù)時(shí)this可以指向程序的上下文,(就是定義時(shí)所在的對象,而不是使用時(shí)所在的對象)

  3. 修改this 指向可以使用以下函數(shù):___ 。
    A: func.call(thisArg, arg1, arg2, ...)
    B: func.call(thisArg, [argsArray])
    C: func.abbly(thisArg, [argsArray])
    D: func.bind(thisArg[, arg1[, arg2[, ...]]])

  4. 以下數(shù)組操作描述錯(cuò)誤的是 ___ 。
    A:length屬性表示數(shù)組的長度,從0開始計(jì)數(shù)。
    B: “arr[arr.length] = 19;”,表示在數(shù)組的末尾處添加一相新的元素,數(shù)組長度不變。
    C:for/in 可以迭代出數(shù)組的下標(biāo),for/of迭代數(shù)組的元素值。
    D:“arr.sort()” 方法可以反轉(zhuǎn)數(shù)組。

  5. 以下對象操作描述正確的是___。
    A:對象可以任意添加屬性和方法。
    B:刪除成功使用 ‘delete’ 關(guān)鍵字。
    C: ‘in’ 關(guān)鍵字可以檢查對象是否是某個(gè)類的實(shí)例。
    D: instanceof 判斷對象是否是某個(gè)類的實(shí)例,結(jié)果是boolean類型。

  6. 為字符串方法匹配正確的說明:‘search()’ ___、‘split()’___、‘replace() ’___、‘match()’___。
    A:字符搜索
    B:替換匹配到的字符串
    C: 分割字符串操作
    D: 匹配一個(gè)或多個(gè)規(guī)則

  7. 以下方法中可以獲取到空白節(jié)點(diǎn)(文件節(jié)點(diǎn))的方法是:___。
    A: element.lastElementChild
    B: element.previousElementSibling
    C: element.childNodes
    D: element.firstChild

  8. 對元素節(jié)點(diǎn)描述正確的是:___。
    A: 元素的節(jié)點(diǎn)類型為1。
    B: 元素的節(jié)點(diǎn)類型為3。
    C:‘element.nodeName’返回元素名稱并且該名稱為大寫。
    D:‘element.nodeType’屬性可讀寫。

  9. 以下事件中支持事件冒泡的事件有:___。
    A: onclick
    B: onmouseenter
    C: onmouseleave
    D: onmouseout

  10. 阻止默認(rèn)事件:___。
    A: event.preventDefault()
    B: IE使用 return false
    C: event.stopPropagation()
    D: IE使用 return true

  11. 下面關(guān)于箭頭函數(shù)描述正確的有___:。
    A: 箭頭函數(shù)中沒有參數(shù)時(shí)參數(shù)可以省略。
    B: 箭頭函數(shù)沒有語句時(shí){}花括號可以省略。
    C: 省略參數(shù)時(shí)不能省略花括號。
    D: 省略花括號時(shí) 不能寫retuan關(guān)鍵字。

  12. 表達(dá)式 5+'1'+1+1-1的結(jié)果是___。
    A: 數(shù)字5110
    B: 字符”5111”
    C: 數(shù)字 7
    D: 字符串”5110”

  13. 表達(dá)式 -1 && 0 && 1 結(jié)果:___
    A: 0
    B: false
    C: -1
    D: true

  14. 關(guān)于Bom描述正確的有:___。
    A: screen.back() 加載 history 列表中的前一個(gè) URL
    B: location.reload() 重新載入當(dāng)前文檔
    C: window.class() 關(guān)閉當(dāng)前窗口
    D: BOM 中最頂層對象是 window 對象。

  15. 關(guān)于 class 描述錯(cuò)誤的有:___。
    A: class 是ES6定義類的新語法。
    B: constructor 構(gòu)造函數(shù), 在實(shí)例化時(shí)第一個(gè)被調(diào)用的函數(shù),類成員要在 constructor 構(gòu)造中定義。定義類時(shí)必須寫constructor 否則報(bào)錯(cuò)。
    C: class 中成員方法間不允許使用 , 逗號分隔。
    D: static 修改靜態(tài)屬性和方法。

  16. 以下哪個(gè)不是 Promise 狀態(tài)______。
    A: pending
    B: fulfilled
    C: rejected
    D: starting

  17. 選出可以表示 boolean 為假的選項(xiàng):______。
    A: undefined
    B: null
    C: ‘’
    D: Symbol('My symbol')

  18. 關(guān)于 ... 描述正確的有:___。
    A: 在函數(shù)中使用表示rest 參數(shù)(形式為...變量名),用于獲取函數(shù)的多余參數(shù)。rest 參數(shù)搭配的變量是一個(gè)數(shù)組,該變量將多余的參數(shù)放入數(shù)組中。
    B: rest 參數(shù)可以替代 arguments 對象,并且在參數(shù)列表中只能有一個(gè)。
    C: ... 可以在數(shù)組中使用,表示展開運(yùn)算符。
    D: Set、Map對象可以使用...展開運(yùn)算符。

  19. 事件委托描述正確的有:___。
    A: 可以讓后續(xù)添加的元素直接擁有事件的行為,也就是直接就擁有事件,而不需要再單獨(dú)指定事件。
    B: 事件委托必須把事件注冊給父級元素。
    C: 只有綁定事件才能支持事件委托。
    D: 通過event.target 可以分辨是哪個(gè)元素觸發(fā)的事件。

簡答題(每題10分)

  1. 什么是事件委托?
  1. 編寫一個(gè)返回5-10隨機(jī)數(shù)的函數(shù)。
  1. 篩選出字符串 "qq號大全,984033324,1452245123-22q2222ddddd,456123" 中QQ號。
  1. 編寫函數(shù)實(shí)現(xiàn)數(shù)組去重。
  1. 為下面HTML 添加事件,當(dāng)點(diǎn)擊Ii 時(shí)可以在控制臺輸入li中內(nèi)容
<ul id="mul">
 <li>蘋果</li>
 <li>香蕉</li>
 <li>草莓</li>
 <li>櫻桃</li>
</ul>
  1. 怎么將數(shù)組的淺拷貝改變?yōu)樯羁截?,請舉例說明
  1. 什么是命名空間?
  1. 簡述 局部變量、全局變量、作用域鏈。
  1. 怎么批量添加元素并且保證高效率?
  1. 什么是遞歸?

如果覺得不錯(cuò)記得點(diǎn)個(gè)贊,轉(zhuǎn)載請注明出處,謝謝

揭曉答案

1.Number、String、Boolean、Object、undefiend、null、Symbol
2.Symbol、獨(dú)一無二
3.Var、let
4.Let、確保常量的唯一
5.``(ES6的模板字符串)、 " "(雙引號) 、' '(單引號)
分別在什么場景使用?單雙引又有什么區(qū)別呢?
6.換、$
7.true/false、1/0
8.連接字符串
9.Object、 function
10.字符串、數(shù)值類型、.toString()、String()、隱式轉(zhuǎn)換
參考 https://blog.csdn.net/qq_37777208/article/details/83586470

  1. Array、Number、Object、function、String、Math
    參考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
    12.索引index(也就是下標(biāo))、計(jì)算時(shí)、 length
    13.將數(shù)據(jù)轉(zhuǎn)換成對象、將字符串串專成對象
    14.匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]、匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]
    15..parent、.parentNode
    16.document.cookie
    17.OnClick、addEvenlisten
    18.瀏覽器頁面的左邊、element.offsetTop
    19.最內(nèi)層的元素、事件捕獲、事件捕獲
    20.瀏覽器的緩存清除
    21.cloneNode()、true、false
    22.SetTimeout、setInterval
    23.繼承、多態(tài)、封裝
    24.Super、父類的構(gòu)造方法、調(diào)用自身的構(gòu)造方法
    25.Math.random()
    26.深拷貝
    27.p[name]
    28.終止該判斷或終止該函數(shù)往下執(zhí)行
    29.199 (Number類型)
    30 e.stopPropagation、e.preventDefault() (不考慮IE兼容)
    選擇題
    1 A B
    2 A E
    3 A C D
    4 A B
    5 B D
    6 A C B D
    7 C
    8 B D
    9 A B
    10 A B
    11 A
    12 A
    13 A
    14 B
    15 C
    16 D
    17 A B
    18 C D
    19 D
    簡答題
    1 利用事件冒泡,指定一個(gè)事件處理程序,就可以管理某一類型的所有事件。
    事件委托的作用
    (1).提高性能:每一個(gè)函數(shù)都會占用內(nèi)存空間,只需添加一個(gè)時(shí)間處理程序代理所有事件,所占用的內(nèi)存空間更少;
    (2).動(dòng)態(tài)監(jiān)聽:使用事件委托可以自動(dòng)綁定動(dòng)態(tài)添加的元素,即新增的節(jié)點(diǎn)不需要主動(dòng)添加也可以具有和其它元素一樣的事件。
    2
 var Range = Max - Min;
 var Rand = Math.random();
 return Min + Math.round(Rand * Range);
}
console.log(GetRandomNum(5,10))

3
利用正則匹配 (可以寫一個(gè)函數(shù)然后把定義好的值放進(jìn)去)

let reg = /^[1-9][0-9]{4,9}$/
let obj = ["984033324","1452245123-22q2222ddddd","456123"]
for(let i=0;i<obj.length;i++){
    if(reg.test(obj[i]) == true){
        console.log('QQ號',obj[i]);
    }
}

4
數(shù)組去重 (總結(jié)了12種方法,如果有需要我再列舉12種方法以及它們的優(yōu)缺點(diǎn))
(1)利用ES6 Set去重

function unique (arr) {
  return Array.from(new Set(arr))
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, 
            null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(unique(arr))
 //[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {}, {}]

(2) 利用for嵌套for,然后splice去重(ES5中最常用)
(3) 利用indexOf去重
(4) 利用sort()
(5) 利用對象的屬性不能相同的特點(diǎn)進(jìn)行去重
(6) 利用includes
(7) 利用hasOwnProperty
(8) 利用filter
(9) 利用Map數(shù)據(jù)結(jié)構(gòu)去重
(10) 利用reduce+includes
(11) [...new Set(arr)]
(12) 利用遞歸去重
5

let ul = document.getElementById("mul")
ul.addEventListener("click", function(e){
   console.log(e.target.innerText);
});

6
(1) 利用JSON.parse JSON.stringify
(2)

function deepClone(obj) {
   // 如果傳入的值不是一個(gè)對象,就不執(zhí)行
   if (Object.prototype.toString.call(obj) !== '[object Object]') return
   // 根據(jù)傳入值的類型初始化返回結(jié)果
   let result = obj instanceof Array ? [] : {}
   for (let key in obj) {
       if (obj.hasOwnProperty(key)) {
           // 如果obj是個(gè)對象,就遞歸調(diào)用deepClone去遍歷obj的每一層屬性,如果不是對象就直接返回值
           result[key] = Object.prototype.toString.call(obj[key]) === '[object Object]' ? deepClone(obj[key]) : >obj[key]
       }
   }
   return result
}
// 改進(jìn)判斷對象的方法
console.log(typeof null === 'object') // true
console.log(Object.prototype.toString.call(null) === '[object Object]') // false

7
http://dditblog.com/itshare_458.html
8
http://caibaojian.com/javscript-var.html
9
思路:循環(huán)+判斷
獲取到對應(yīng)元素的id或者class,然后再加以元素控制
10

// function fn() {
//   fn()
// }
// 1. 自己調(diào)用自己
// 2. 因?yàn)樽约赫{(diào)用自己會出現(xiàn)無限死循環(huán) 所以還需要設(shè)置一個(gè)停止條件
// 3. 遞歸永遠(yuǎn)是樹形結(jié)構(gòu) -> 遞歸樹
// 4. 最先調(diào)用的函數(shù) 最后執(zhí)行完畢 最后調(diào)用的函數(shù) 最先執(zhí)行完畢
// 階乘
// 5! = 5 * 4 * 3 * 2 * 1  = fn(5) => fn(4) * 5
// 4! =     4 * 3 * 2 * 1  = fn(4) => fn(3) * 4
// 3! =         3 * 2 * 1  = fn(3) => fn(2) * 3
// 2! =             2 * 1  = fn(2) => fn(1) * 2
// 1! =                 1  = fn(1) => 1
// fn(n) = fn(n - 1) * n
// n! => fn(n)
// 5! => fn(5)  4! => fn(4)  3! => fn(3)  2! => fn(2)  1! => fn(1)

function fn(n) {
 if (n === 1) {
   return 1
 } else {
   return n * fn(n - 1)
 }
}

//fn(5) 開啟一個(gè)棧內(nèi)存
//fn(4) 開啟一個(gè)棧內(nèi)存
//fn(3) 開啟一個(gè)棧內(nèi)存
//fn(2) 開啟一個(gè)棧內(nèi)存 
//fn(1) 開啟一個(gè)棧內(nèi)存 return 1
console.log(fn(4))  //24
// console.log(fn(5))
// console.log(fn(6))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容