前端面試題十六@楊志剛

列舉三種強(qiáng)制類(lèi)型轉(zhuǎn)換和兩種隱式類(lèi)型轉(zhuǎn)換

強(qiáng)制(parseInt,parseFloat,number)

隱式(== – ===)

強(qiáng)制類(lèi)型轉(zhuǎn)換

Number(參數(shù))把任何類(lèi)型轉(zhuǎn)換成數(shù)值類(lèi)型

parseInt(參數(shù)1,參數(shù)2)將字符串轉(zhuǎn)換成整數(shù)

parseFloat()將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)字

string(參數(shù)):可以將任何類(lèi)型轉(zhuǎn)換成字符串

Boolean()可以將任何類(lèi)型的值轉(zhuǎn)換成布爾值

隱式類(lèi)型轉(zhuǎn)換

(1).四則運(yùn)算

    加法運(yùn)算符+是雙目運(yùn)算符,只要其中一個(gè)是string類(lèi)型,表達(dá)式的值便是一個(gè)String。

    對(duì)于其他的四則運(yùn)算,只有其中一個(gè)是Number類(lèi)型,表達(dá)式的便是一個(gè)Number。

    對(duì)于非法字符的情況通常會(huì)返回NaN:'1'*'a' ? ?// => NaN,這是因?yàn)閜arseInt(a)值為NaN,1*NaN還是NaN

(2).判斷語(yǔ)句

    判斷語(yǔ)句中的判斷條件需要是 Boolean類(lèi)型,所以條件表達(dá)式會(huì)被隱式轉(zhuǎn)換為Boolean。其轉(zhuǎn)換規(guī)則則同Boolean的構(gòu)造函數(shù)。比如:

            var obj = {};if(obj){

              while(obj);

            }

(3).Native代碼調(diào)用

    JavaScript宿主環(huán)境都會(huì)提供大量的對(duì)象,它們往往不少通過(guò)JavaScript來(lái)實(shí)現(xiàn)的。JavaScript給這些函數(shù)傳入的參數(shù)也會(huì)進(jìn)行隱式轉(zhuǎn)換。例如BOM提供的alert方法接受String類(lèi)型的參數(shù):alert({a:1}); ?//=>[object Object]

JavaScript typeof返回哪些數(shù)據(jù)類(lèi)型

? ? ?undefined

  string

  boolean

  number

  symbol(ES6)

  Object

  Function

window.onload 和document.ready的區(qū)別

document.ready和window.onload都是在都是在頁(yè)面加載完執(zhí)行的函數(shù),大多數(shù)情況下差別不大,但也是有區(qū)別的。

document.ready是DOM結(jié)構(gòu)繪制完畢后就執(zhí)行,不必等到加載完畢。 意思就是DOM樹(shù)加載完畢,就執(zhí)行,不必等到頁(yè)面中圖片或其他外部文件都加載完畢。并且可以寫(xiě)多個(gè).ready。

window.onload:是頁(yè)面所有元素都加載完畢,包括圖片等所有元素。只能執(zhí)行一次。


怎樣添加、移除、復(fù)制、創(chuàng)建、查找節(jié)點(diǎn)

創(chuàng)建新節(jié)點(diǎn)

?????? createDocumentFragment()????//創(chuàng)建一個(gè)DOM片段

?????? createElement()???//創(chuàng)建一個(gè)具體的元素

?????? createTextNode()???//創(chuàng)建一個(gè)文本節(jié)點(diǎn)

添加、移除、替換、插入

?????? ?appendChild()

??????? removeChild()

??????? replaceChild()

??????? insertBefore()

查找

?????? getElementsByTagName()????//通過(guò)標(biāo)簽名稱(chēng)

??????? getElementsByName()????//通過(guò)元素的Name屬性的值

??????? getElementById()????//通過(guò)元素Id,唯一性

在JavaScript中什么是偽數(shù)組?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組

偽數(shù)組:具有l(wèi)ength屬性,按索引方式存儲(chǔ)數(shù)據(jù),不具有數(shù)組的push,pop等方法

轉(zhuǎn)化:1.Array.prototype.slice.call(fakeArray)

? 2.Array.from(fakeArray)

jQuery的事件委托on、live、delegate之間有什么區(qū)別

live 把事件委托交給了document(根節(jié)點(diǎn)),document 向下去尋找符合條件的元素(), 不用等待document加載結(jié)束也可以生效。

delegate可指定事件委托對(duì)象,相比于live性能更優(yōu),直接鎖定指定選擇器;

on事件委托對(duì)象選填,如果不填,即給對(duì)象自身注冊(cè)事件,填了作用和delegate一致。

band只能給調(diào)用它的時(shí)候已經(jīng)存在的元素綁定事件,不能給未來(lái)新增的元素綁定事件,存在局限性。

描述一次完整的http請(qǐng)求過(guò)程(輸入url敲回車(chē)發(fā)生了什么)

在瀏覽器輸入地址時(shí),先從本地系統(tǒng)下hosts文件里尋找對(duì)應(yīng)ip,如果有就直接使用,沒(méi)有就進(jìn)行DNS解析,DNS解析域名后會(huì)得到服務(wù)器的ip地址,瀏覽器向web服務(wù)器發(fā)送http請(qǐng)求,就開(kāi)始建立連接,由TCP協(xié)議完成,通過(guò)三次握手連接,連接后瀏覽器向服務(wù)器發(fā)送http請(qǐng)求,服務(wù)器返回一個(gè)http響應(yīng),瀏覽器接受響應(yīng)后,如果響應(yīng)內(nèi)容為html文檔,就由瀏覽器解析,渲染呈現(xiàn)給用戶,渲染頁(yè)面前,需要構(gòu)建DOM樹(shù)和CSSOM樹(shù),最后關(guān)閉TCP連接或繼續(xù)保持連接,通過(guò)四次揮手關(guān)閉連接

擴(kuò)展1.DNS服務(wù)器怎么進(jìn)行域名解析?

www.168.com

客服端向本地DNS服務(wù)器詢問(wèn)ip,本地DNS服務(wù)器查找自身緩存,沒(méi)有就向根服務(wù)器詢問(wèn),根服務(wù)器會(huì)告知本地DNS服務(wù)器這個(gè)域名由.com管理,本地DNS服務(wù)器會(huì)向.com域服務(wù)器詢問(wèn)ip,.com域服務(wù)器會(huì)告知在168.com服務(wù)器中,本地DNS服務(wù)器向168.com詢問(wèn)ip,168.com域服務(wù)器返回ip給本地DNS服務(wù)器,本地DNS服務(wù)器將ip地址給客戶端并緩存

擴(kuò)展2.三次握手

1.客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn)

2.?服務(wù)器收到syn包,確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);

3.客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手

擴(kuò)展3.四次揮手

1.瀏覽器發(fā)完數(shù)據(jù)后,發(fā)送FIN請(qǐng)求斷開(kāi)連接

2.服務(wù)器發(fā)送ACK表示同意

3.服務(wù)器發(fā)送FIN請(qǐng)求斷開(kāi)連接

4.瀏覽器發(fā)送ACK表示同意

http狀態(tài)碼有哪些

1**信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作

2**成功,操作被成功接收并處理

3**重定向,需要進(jìn)一步的操作以完成請(qǐng)求

4**客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求

5**服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤

后臺(tái)管理系統(tǒng)權(quán)限你是如何實(shí)現(xiàn)的?

定義路由表的時(shí)候要定義兩張表,靜態(tài)路由表(無(wú)需權(quán)限的使用)和權(quán)限路由表(與后臺(tái)返回的權(quán)限匹配用),然后登錄,如果登錄成功,我就用路由全局守衛(wèi)攔截,判斷是否已有用戶權(quán)限列表,如果沒(méi)有就調(diào)用接口重新獲取,如果有就將權(quán)限數(shù)據(jù)存在vuex中,方便我們?cè)诟鱾€(gè)組件中使用,vuex中的權(quán)限數(shù)據(jù)和需要訪問(wèn)權(quán)限的路由表比對(duì),生成當(dāng)前賬戶對(duì)應(yīng)的權(quán)限路由表,用過(guò)addRoutes方法來(lái)動(dòng)態(tài)添加路由規(guī)則,最后生成可訪問(wèn)的側(cè)邊欄菜單

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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