22天面試題

1.什么是事件代理且描述事件代理的原理及為什么要用事件代理乳幸?

2.移動端1px問題摔踱,為什么會有?如何解決暮蹂?

3.解釋jsonp的原理

4.在工作中你是如何優(yōu)化自己的代碼的签夭?

5.axios是什么?如何使用椎侠?描述其實現(xiàn)登錄的流程

6.用JS去掉數(shù)組里面重復(fù)的數(shù)據(jù)第租,并且打印出來? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var? ?arr = [a,b,c,d,d,e,a,b,f,g]

One,什么是事件代理且描述事件代理的原理及為什么要用事件代理我纪?

? ? ? ? 事件委托就是利用事件冒泡慎宾,只指定一個事件處理程序,就可以管理某一類型的所有事件

? ? ? ? 像電商購物車的控制數(shù)量加減刪除等功能就利用了事件委托浅悉,現(xiàn)有的dom節(jié)點有事件趟据,新添加的dom節(jié)點也有事件

? ? ? ? 事件冒泡:

? ? ? ? 事件委托是利用事件的冒泡原理來實現(xiàn)的,何為事件冒泡呢术健?就是事件從最深的節(jié)點開始汹碱,然后逐步向上傳? ? 播事件? ?

? ? ? ? 有這樣一個機制,那么我們給最外面的div加點擊事件荞估,那么里面的ul咳促,li,a做點擊事件的時候勘伺,都會冒泡到最外層的div上跪腹,所以都會觸發(fā),這就是事件委托飞醉,委托它們父級代為執(zhí)行事件冲茸。

? ? ? ? ?為什么用事件代理:

? ? ? ? ?在JavaScript中,添加到頁面上的事件處理程序數(shù)量將直接關(guān)系到頁面的整體運行性能缅帘,因為需要不斷的與dom節(jié)點進(jìn)行交互轴术,訪問dom的次數(shù)越多,引起瀏覽器重繪與重排的次數(shù)也就越多钦无,就會延長整個頁面的交互就緒時間逗栽,這就是為什么性能優(yōu)化的主要思想之一就是減少DOM操作的原因;如果要用事件委托铃诬,就會將所有的操作放到j(luò)s程序里面祭陷,與dom的操作就只需要交互一次苍凛,這樣就能大大的減少與dom的交互次數(shù),提高性能

? ? ? ? ? 簡單說每個函數(shù)都是一個對象兵志,而只要是對象就會占用內(nèi)存醇蝴,對象越多內(nèi)存消耗越大,就影響了性能想罕,而如果使用事件委托悠栓,則只需對父級進(jìn)行操作,這樣就只使用一個對象也就是函數(shù)就夠了

Two按价,移動端1px問題惭适,為什么會有?如何解決楼镐?

? ? ? ? ? ? 由于不同的手機有不同的像素密度導(dǎo)致的癞志。如果移動顯示屏的分辨率始終是普通屏幕的2倍,1px的邊框在devicePixelRatio=2的移動顯示屏下會顯示成2px框产,所以在高清瓶下看著1px總是感覺變胖了

解決方案

1.在ios8+中當(dāng)devicePixelRatio=2的時候使用0.5px

p{

????border:1px solid #000;

}

@media (-webkit-min-device-pixel-ratio: 2) {

???? p{

???? ????border:0.5px solid #000;

???? }

}

2.偽類 + transform 實現(xiàn)

對于老項目偽類+transform是比較完美的方法了凄杯。

原理是把原先元素的 border 去掉,然后利用 :before 或者 :after 重做 border 秉宿,并 transform 的 scale 縮小一半戒突,原先的元素相對定位,新做的 border 絕對定位描睦。

單條border樣式設(shè)置:

.scale-1px{ position: relative; border:none; }

.scale-1px:after{

????content: '';

????position: absolute; bottom: 0;

????background: #000;

????width: 100%; height: 1px;

????-webkit-transform: scaleY(0.5);

????transform: scaleY(0.5);

???? -webkit-transform-origin: 0 0;

????transform-origin: 0 0;?

}

優(yōu)點:所有場景都能滿足膊存,支持圓角(偽類和本體類都需要加border-radius)

缺點:對于已經(jīng)使用偽類的元素(例如clearfix),可能需要多層嵌套

3.viewport + rem 實現(xiàn)

????????這種兼容方案相對比較完美忱叭,適合新的項目隔崎,老的項目修改成本過大。

????????在devicePixelRatio = 2 時窑多,輸出viewport:

????????在devicePixelRatio = 3 時仍稀,輸出viewport:

????????優(yōu)點:所有場景都能滿足,一套代碼埂息,可以兼容基本所有布局

????????缺點:老項目修改代價過大,只適用于新項目

4.使用box-shadow模擬邊框

利用css 對陰影處理的方式實現(xiàn)0.5px的效果

樣式設(shè)置:

.box-shadow-1px {

box-shadow: inset 0px -1px 1px -1px #c8c7cc;

}

優(yōu)點:代碼量少遥巴,可以滿足所有場景

缺點:邊框有陰影千康,顏色變淺

Three.解釋jsonp的原理

?????jsonp的原理:就是利用瀏覽器可以動態(tài)地插入一段js并執(zhí)行的特點完成的。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?注意:jsonp只支持get請求? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsonp的核心是動態(tài)添加script標(biāo)簽調(diào)用服務(wù)器提供的js腳本? ??

簡單封裝:

? ? ? ?原理:因為瀏覽器有同源策略铲掐,script標(biāo)簽的src屬性,src屬性不僅僅可以寫 JS文件拾弃,可以請求任意文件,通過JS這一特點實現(xiàn)摆霉,并添加async(異步屬性)豪椿,在js文件中封裝函數(shù)奔坟,函數(shù)中進(jìn)行異步操作

簡單封裝jsonp文件

Four.在工作中你是如何優(yōu)化自己的代碼的?

命名規(guī)范搭盾;

注釋覆蓋率50%以上咳秉;

避免全局變量;

避免修改原生API鸯隅;

拆分函數(shù)澜建,避免函數(shù)過于臃腫;

函數(shù)專注于做一件事情蝌以;

模塊化封裝炕舵;

組件化開發(fā);

對于常量始終保持先定義后使用跟畅;

對于兩個分支的判斷咽筋,使用三目運算符,對于多個分支的判斷使用switch語句徊件;

減少DOM操作晤硕,減少頁面重繪;

盡可能使用 === 而不是 ==庇忌,避免隱式轉(zhuǎn)換舞箍。

Five.? ?axios是什么?如何使用皆疹?描述其實現(xiàn)登錄的流程

? ? ??Axios 是一個基于 promise 的 HTTP 庫疏橄,簡單的講就是可以發(fā)送get、post請求略就。

? ? ?在特性里面已經(jīng)有提到捎迫,瀏覽器發(fā)送請求,或者Node.js發(fā)送請求都可以用到Axios

使用:npm install axios或<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>

引入模塊后可以直接使用

? ?//Get

? ?function(){

? ? ? ? axios.get('/user',{params:{ID:12345}}).then(function(response)

? ? ? ? ? ? ? ? ? {console.log(response);

? ? ? ? ? ? ?})

? ?}

//Post

function(){

? ? ? ?axios.post('/url',{name:'a',sex:'women'}).then(function(res){

? ? ? ? ? ? ? console.log(res)

? ? ? ?})

}

也可以使用拼接字符串的方式使用post請求

let name = 'a'? ? ?let sex = 'women'

`url+${name}+${sex}`

使用axios實現(xiàn)登陸:首先我們需要登陸的接口表牢,登陸是post請求窄绒,將用戶名和密碼作為參數(shù)提交到后臺上,只需要獲取到用戶名和密碼這兩條數(shù)據(jù)并提交到接口就好崔兴,提交后彰导,后臺會返回一條數(shù)據(jù)給我們,成功會給我們一條token值敲茄,拿到token值后位谋,就可以進(jìn)行對用戶的編寫,失敗則會返回失敗堰燎,根據(jù)這兩條數(shù)據(jù)來判斷是否登陸成功

six.? ? 用JS去掉數(shù)組里面重復(fù)的數(shù)據(jù)掏父,并且打印出來? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var? ?arr = [a,b,c,d,d,e,a,b,f,g]

? ? ? 數(shù)組元素不是字符串,都是未定義的變量秆剪,小四你真黑啊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赊淑,一起剝皮案震驚了整個濱河市爵政,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陶缺,老刑警劉巖钾挟,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異组哩,居然都是意外死亡等龙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門伶贰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛛砰,“玉大人,你說我怎么就攤上這事黍衙∧喑” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵琅翻,是天一觀的道長位仁。 經(jīng)常有香客問我,道長方椎,這世上最難降的妖魔是什么聂抢? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮棠众,結(jié)果婚禮上琳疏,老公的妹妹穿的比我還像新娘。我一直安慰自己闸拿,他們只是感情好空盼,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著新荤,像睡著了一般揽趾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苛骨,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天篱瞎,我揣著相機與錄音,去河邊找鬼智袭。 笑死奔缠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吼野。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼两波,長吁一口氣:“原來是場噩夢啊……” “哼瞳步!你這毒婦竟也來了闷哆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤单起,失蹤者是張志新(化名)和其女友劉穎抱怔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘀倒,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡屈留,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了测蘑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灌危。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碳胳,靈堂內(nèi)的尸體忽然破棺而出勇蝙,到底是詐尸還是另有隱情,我是刑警寧澤挨约,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布味混,位于F島的核電站,受9級特大地震影響诫惭,放射性物質(zhì)發(fā)生泄漏翁锡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一夕土、第九天 我趴在偏房一處隱蔽的房頂上張望馆衔。 院中可真熱鬧,春花似錦隘弊、人聲如沸哈踱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽开镣。三九已至,卻和暖如春咽扇,著一層夾襖步出監(jiān)牢的瞬間邪财,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工质欲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留树埠,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓嘶伟,卻偏偏與公主長得像怎憋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件癌别,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評論 1 11
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,097評論 1 32
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined皂岔、Nul...
    極樂君閱讀 5,514評論 0 106
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化,入門級到專家級展姐,廣度和深度都會有所增加躁垛。 題目類型: 理論知...
    怡寶丶閱讀 2,580評論 0 7
  • js之事件機制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驅(qū)動...
    道無虛閱讀 2,356評論 1 3