1-typeof的返回值?
? ? number靡挥、string、boolean簸淀、object幔烛、undefined、function令蛉、symbol
2-類型轉(zhuǎn)換
? ? 強制:parseInt珠叔、parseFloat弟劲、Boolean、String兔乞、Number
? ? 隱士:>凉唐、<台囱、+读整、*米间、==、if的榛、||困曙、&&
? ? 除了判斷null或者undefined其他一律三等
3-split和join
? ? split用于將字符串通過指定分隔符拆分為數(shù)組
? ? join則像是一個split的你操作,用以將數(shù)組轉(zhuǎn)字符串,默認轉(zhuǎn)出的字符串以逗號分隔蹦哼,可以指定""參數(shù)消除
4-常用的數(shù)組操作
? ? push纲熏、pop、shift勺拣、unshift药有、splice苹丸、join愤惰、slice、concat赘理、fill宦言、sort、flat商模、from奠旺、reverse蜘澜、includes、indexOf响疚、? ? ? ? ? ? map鄙信、forEach、filter稽寒、every扮碧、some、reduce
5-ie兼容性
? ? event || window.event
? ? event.target || event.scrElement
? ? document.documentElement.clientWidth || document.body.clientWidth
? ? event.stopPropagation || event.cancelBubble=true
? ? event.preventDefault || event.returnValue = false
6-ajax
? ? I-get和post的區(qū)別
? ? ? ? get請求參數(shù)會附帶到地址欄后,明文傳輸咱旱,安全性較低,不同的瀏覽器對大小限制不同褂始,chrome在7700左右,? ? ? ? ? ? ? ? ? 主要用于獲取
? ? ? ? post參數(shù)放在虛擬載體中肌蜻,對用戶不可見,相對較安全齿诞,理論上對數(shù)據(jù)量無限制,主要用于提交
? ? II-ajax實現(xiàn)過程
? ? ? ? //兼容處理
? ? ? ? var xhr = null
? ? ? ? if(window.XMLHttpRequest){
? ? ? ? ? ? xhr = new?XMLHttpRequest()
????????}else{
? ? ? ? ? ? xhr = new ActiveXObject("Microsoft.XMLHTTP")
????????}
? ? ? ?//準備請求
? ? ? ? xhr.open(get/post) //若為post需要setRequestHeader
? ? //發(fā)送
? ? ? ? xhr.send()
? ? //監(jiān)聽狀態(tài)
? ? ? ? xhr.onreadyStateChange = ()=>{
? ? ? ? ? ? ? ? if(xhr.readyState == 4 && xhr.status == 200){
? ? ? ? ? ? ? ? ? ? ? ? //獲取api數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? json.parse(apiData)
????????????????}
????????}
7-call和apply的區(qū)別
? ? 都用于改變this指向
? ? 傳參方式不同宿刮,call單個,apply傳遞一個數(shù)組
8-什么是事件委托
? ? 通過事件冒泡將子元素委托到父元素處理磕潮,這樣具有一定的動態(tài)性,不需要考慮后續(xù)子元素的增減膏潮,亦不需要重新? ? ? ? 注冊事件油额,但是應用場景也僅限于此
9-閉包
? ? 當在函數(shù)內(nèi)return一個函數(shù)讲岁,且return的函數(shù)保留是外層函數(shù)的引用看峻,會生成閉包互妓,閉包會阻止變量被回收,延長了? ? ? ? 生命周期灼狰。但是濫用會導致內(nèi)存泄漏
? ? 使用方式:將函數(shù)作為參數(shù)或返回值
? ? 應用:
? ? 表現(xiàn):定義處和使用處不一樣
10-常用dom操作
? ? I-創(chuàng)建
? ? ? ? createElement、createTextNode
? ? II-插入
? ? ? ? insertBefore、appendChild
? ? III-替換
? ??????replaceChild
? ? IV-刪除
? ? ? ? removeChild
? ? V-獲取
? ? ? ? getElementsByClassName旁钧、getElementById、getElementsByTagName、querySelector(靜態(tài))
11-jsonP
? ? 利用script標簽的跨域性動態(tài)創(chuàng)建并插入焦影,但是只支持get請求,且需要與后臺配合
12-load和ready的區(qū)別
? ? window.onload會等待頁面資源加載完畢,這包括圖片闸氮、css授翻、js巡语、html
? ? ready在原生上并沒有實現(xiàn),它只關(guān)注dom是否創(chuàng)建完畢
13-函數(shù)聲明與函數(shù)表達式的區(qū)別
? ? 使用function關(guān)鍵字定義的函數(shù)將在預編譯過程中被提升理澎,函數(shù)是全局可用的寇荧;而使用var定義的則不會被提升,只? ? ? ? 在執(zhí)行到時才有含義
14-http
? ??http://www.reibang.com/p/7ed690f4b83a
15-異步和同步的區(qū)別
? ? 異步基于js單線程,不會阻塞代碼,同步會
16-手寫promise加載圖片
? ? function loadImg(src){
? ? ? ? return new Promise((resolve,reject)=>{
? ? ? ? ? ? ? ? let img = document.createElement('img')
? ? ? ? ? ? ? ? img.onload = ()=>{
? ??????????????????resolve(img)
????????????????}
? ? ? ? ? ? ? ? img.onerror = ()=>{
? ??????????????????reject('err')
????????????????}
? ? ? ? ? ? ? ? img.src = src
????????})
????}
17-dom事件綁定
? ? let elem = document.getElementById('test')
? ? elem.addEventListener(eventType,callback)
? ? elem.onEventType = callback
? ? <div onEventType="callback"></div>
18-判斷字符串以字母開頭,后邊可以是字母,數(shù)字或下劃線疚颊,長度5-30
? ? /[a-zA-Z]\w{5,30}/
19-null和undefined的區(qū)別
? ? null表示一個值為空的對象母截,使用Number轉(zhuǎn)換的結(jié)果為0喘漏;undefined表示一個已聲明但未初始化值的變量,使用? ? ? ? ? ? ? ? ? Number轉(zhuǎn)換結(jié)果為NaN
? ? undefined常見的場景如下
? ? ? ? 函數(shù)參數(shù)未傳????
? ? ? ? 函數(shù)無返回值
? ? ? ? 對象不存在某屬性
? ? ? ? 變量聲明未賦值
? ? null常見常見
? ? ? ? 原型鏈終點
? ? ? ? 對象占位
20-new干了什么
? ? 創(chuàng)建一個對象,并將this指向該對象,將函數(shù)的屬性和方法拷貝一份同時對原型繼承,最后返回該對象
21-按需加載
? ? defer? ? 并行加載本慕、非阻塞藤违、保證順序
????async? ? 不保證順序
????動態(tài)script骡男、按需加載
22-flash和ajax
? ? flash適用媒體、質(zhì)量圖,ajax適用文本、搜索
? ? 都用于服務器通信,都實現(xiàn)了局部刷新
23-寫出下面代碼的執(zhí)行結(jié)果
? ? 結(jié)果:4 1 3 5 2
? ? 解析:引擎執(zhí)行時打印4,調(diào)用a函數(shù)輸出1,遇到await,先對await進行求值輸出3,然后將后續(xù)代碼視為異步交管webAPI后繼續(xù)執(zhí)行同步代碼輸出5,此時同步代碼執(zhí)行完畢且其他可退出調(diào)用棧的代碼,開啟事件循環(huán),輪詢回調(diào)隊列輸出2
24-什么是宏任務和微任務,兩者的區(qū)別
? ? 宏:定時器、dom事件惕橙、ajax
? ? 微:promise彬坏、async/await
? ? 區(qū)別:微任務的執(zhí)行時機早于宏任務
25-值類型和引用類型的區(qū)別
? ? 值存儲在棧內(nèi)存中,引用類型存儲在堆內(nèi)容中坯屿;當變量值為引用類型時吠昭,會在堆內(nèi)存中開辟空間并將地址交予變量(變量在棧內(nèi)存)
26-如何判斷數(shù)組
? ? arr instanceof Array
27-深拷貝
28-手寫簡易jq
29-truely和falsely變量
? ? 兩次取反后為true或false(除了0兜粘、‘’路鹰、NaN帽氓、null势腮、undefined、false外都是truely變量)
30-class的原型本質(zhì),如何理解
? ? 原型和原型鏈
? ? 當使用new操作符時,返回的實例會被添加__proto__隱式原型指向原型對象,而每一個原型對象又有自己的隱式原型指向父級的原型對象,直到null
31-手寫繼承
? ?
32-手寫bind
33-this
? ? 場景:普通函數(shù)逝撬、call/apply/bind狡相、對象方法滔悉、class歉提、箭頭函數(shù)
? ? 指向:取值取絕于執(zhí)行(箭頭函數(shù)的this取其父級中的this)