js 面試題總結(jié)

1.JavaScript概述(js是什么北戏?)

?JavaScript是一種基于對象的克滴,事件驅(qū)動的疾嗅,跨平臺的珠十,客戶端腳本語言

?基于對象、事件驅(qū)動荠诬、跨平臺琅翻、客戶端腳本、弱類型浅妆、解釋性(編程)語言

2.運(yùn)算符的優(yōu)先級

()自增自減(單目)算數(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符三目運(yùn)算賦值

3.js的三大結(jié)構(gòu)

順序結(jié)構(gòu)條件結(jié)構(gòu)循環(huán)結(jié)構(gòu)

Case的穿透特性望迎。

4.?break、continue凌外、return的區(qū)別

break多用于switch語句辩尊,防止case的穿透特性,執(zhí)行完語句直接退出循環(huán),不在向后執(zhí)行康辑。

continue只會退出本次循環(huán)摄欲,不執(zhí)行后面代碼,但循環(huán)會繼續(xù)疮薇。

return用在函數(shù)返回值中胸墙,用了return退出函數(shù),不執(zhí)行后面代碼按咒,如果函數(shù)沒有返回值是undefined迟隅。

5.?什么是作業(yè)域鏈

當(dāng)訪問一個(gè)變量時(shí),先在當(dāng)前作用域找励七,如果找不到時(shí)在向父級的作用域找智袭,在找不到在向上級的作用域找,最后找到window如果沒有這個(gè)變量時(shí)掠抬,程序報(bào)錯(cuò)吼野。

6.函數(shù)的好處

1.函數(shù)實(shí)現(xiàn)一段功能的封裝,增加了代碼的復(fù)用性两波,一次封裝多次使用瞳步;

2.函數(shù)讓變量私有化闷哆,避免命名空間的污染;

3.通過參數(shù)的傳遞单起,可以實(shí)現(xiàn)功能的多元化抱怔;

7.什么是形參什么是實(shí)參

形參:函數(shù)聲明時(shí)定義的形式參數(shù),沒有具體的值嘀倒,用來傳遞參數(shù)野蝇。

實(shí)參:一個(gè)有具體的值的參數(shù),可以理解為一個(gè)變量括儒,做為參數(shù)傳遞時(shí)就叫實(shí)參

8.什么是函數(shù)的變量提升

當(dāng)程序執(zhí)行時(shí)會分為預(yù)解析和解析兩個(gè)過程,在預(yù)解析的過程中會把所有的var聲明和函數(shù)聲明提升到當(dāng)前作用域的最開頭锐想,進(jìn)行一個(gè)聲明不賦值的操作帮寻,如果是函數(shù)把整個(gè)函數(shù)提升到開頭,如果是匿名函數(shù)賦值給了變量赠摇,提升的是變量固逗,如果var聲明和函數(shù)名沖突了,優(yōu)先保留函數(shù)藕帜。

9.事件和函數(shù)的關(guān)系

事件三要素:

? ? 事件源烫罩,事件,事件處理程序

關(guān)系:事件依賴于函數(shù)實(shí)現(xiàn)

10.怎么訪問對象

訪問對象的兩種方式:1.對象·鍵名直接調(diào)用洽故。2.對象【“鍵”】調(diào)用

方法二注意贝攒,如果鍵是一個(gè)變量不用雙引號,且如果鍵是只能方法二調(diào)用时甚,如果是一個(gè)函數(shù)在【】后面還要加一個(gè)小括號隘弊。

11.改變數(shù)組的方法有那些

增:push加到最后、unshift加到最開頭荒适。返回的是改變的新數(shù)組的長度梨熙。

刪:pop刪除最后一個(gè),shift刪除第一個(gè)刀诬。返回的是刪除的元素咽扇。

拷貝:splice(a,b陕壹,c)傳0以上质欲,0個(gè)參數(shù)拷貝數(shù)組,1個(gè)參數(shù)重下標(biāo)位置開始拷貝帐要,2個(gè)參數(shù)重a拷貝到b把敞,3個(gè)以上參數(shù)從a拷貝到b并且把后面的數(shù)插入數(shù)組。返回新數(shù)組榨惠。

Reverse:數(shù)組倒序輸出奋早。

12.什么是堆什么是棧

棧:當(dāng)變量聲明時(shí)會在內(nèi)存中開辟一片空間盛霎,如果是基本數(shù)據(jù)類型開辟的是棧空間耽装,每聲明一次開辟一次愤炸,一個(gè)變量等于另一個(gè)變量時(shí)又開辟了一片空間,一個(gè)值變另一個(gè)不會變掉奄,瀏覽器清除棧原則:先進(jìn)后出即先聲明最后清除规个。

堆:當(dāng)聲明的是引用數(shù)據(jù)類型時(shí),開辟一個(gè)堆空間姓建,變量存的是一個(gè)指向?qū)?yīng)堆空間的地址诞仓,當(dāng)多個(gè)變量重復(fù)聲明時(shí)都值向一個(gè)堆,如果有一個(gè)變量的值變了速兔,即堆空間中的值變了墅拭,所有指向這個(gè)地址的值都會變。

13.splice和concat的區(qū)別

Splice合并數(shù)組時(shí)涣狗,傳入的值可以是數(shù)組谍婉,合并成二維數(shù)組,而concat傳入的值如果是一個(gè)數(shù)組镀钓,會取出一個(gè)一個(gè)元素合并穗熬。

14.什么是內(nèi)置對象,舉例說明丁溅。

Js內(nèi)部封裝的可以直接調(diào)用的系統(tǒng)內(nèi)部的對象就是內(nèi)置對象唤蔗,比如時(shí)間對象,數(shù)字對象唧瘾。

15.什么是bom模型和dom模型

bom模型就是html在瀏覽器端運(yùn)行生成的對象模型措译,子對象是window,window下的子對象是document饰序、history领虹、location、screen求豫、navigator塌衰。

Dom模型其實(shí)就是html文檔樹,html由head蝠嘉、body組成最疆。

16.什么是事件對象

對元素的某種操作就是事件,當(dāng)觸發(fā)事件時(shí)生成的對象就是事件對象蚤告,

17.attributes怎么用

Attribute可以設(shè)置自定義屬性努酸,也可以獲取自定義的屬性,也可以移除自定義的屬性杜恰,getattribute獲取的是一個(gè)對應(yīng)屬性的集合获诈。Attributes獲取的是對應(yīng)節(jié)點(diǎn)的所有屬性節(jié)點(diǎn)仍源。

18.什么是事件

當(dāng)某個(gè)事件執(zhí)行時(shí),從子元素向父元素觸發(fā)或從父元素向子元素觸發(fā)稱為事件流舔涎,事件流分為:事件冒泡和事件捕獲笼踩。

19.事件監(jiān)聽的好處

1. 可以為一個(gè)元素綁定多次同一個(gè)事件

2. 程序員可以使用事件監(jiān)聽方式確定觸發(fā)的事件過程是冒泡還是捕獲

20.委托的好處和缺點(diǎn)

委托的機(jī)制:利用事件冒泡實(shí)現(xiàn)

優(yōu)點(diǎn):1.把某個(gè)事件加到父元素上,提高程序的執(zhí)行效率

2.動態(tài)創(chuàng)建的元素亡嫌,可以在創(chuàng)建元素的函數(shù)體外部為其添加事件

3.減少內(nèi)存資源的消耗嚎于。

缺點(diǎn):1.只觸發(fā)target目標(biāo)節(jié)點(diǎn),其它子節(jié)點(diǎn)不觸發(fā)

2.層級關(guān)系太遠(yuǎn)容易造成事件誤判挟冠。

21.this的指向

一于购、自定義函數(shù)中:1.this指向window。

2.如果自定義函數(shù)在對象中知染,this指向直屬對象价涝。

3.如果在嚴(yán)格模式下,this是undefined持舆。

二、事件綁定中伪窖,this指向事件源逸寓,即綁定這個(gè)事件的元素對象。

三覆山、箭頭函數(shù)中的this 來源于函數(shù)聲明時(shí)所在的上下文環(huán)境(繼承)

四竹伸、定時(shí)器中回調(diào)函數(shù)中的this指向window

五、this指向改變的方法: blind()簇宽,call()勋篓,apply()

?blind可以在所有的匿名函數(shù)(不包括箭頭函數(shù))中使用

call和apply可以在非匿名函數(shù)和匿名函數(shù)后調(diào)用執(zhí)行,但用于匿名函數(shù)時(shí)函數(shù)會立即執(zhí)行魏割。函數(shù)的實(shí)參會通過call的參數(shù)一個(gè)一個(gè)進(jìn)行傳參譬嚣,

而apply會在第二個(gè)參數(shù)以數(shù)組的方式進(jìn)行傳參。


22.正則的量詞有哪些

+:1個(gè)或多個(gè)钞它。

*:0個(gè)或多個(gè)拜银。

?:1個(gè)或0個(gè)遭垛。

{a尼桶,b}:a到b個(gè)。

23.什么是嚴(yán)格模式是什么锯仪,有哪些好處

嚴(yán)格模式就語法相對于嚴(yán)格的一種模式泵督,把“use strict”放到程序的最開頭就是嚴(yán)格模式的聲明,聲明后下面就是嚴(yán)格模式的作用域庶喜。

好處:1.代碼更規(guī)范整潔小腊,可讀性高救鲤。

2.程序效率更高

24.let關(guān)鍵字的特點(diǎn)

1:不允許重復(fù)聲明變量

2:作用域范圍內(nèi)沒有變量提升,所以關(guān)鍵字上方為暫時(shí)性死區(qū)溢豆。

3:會生成塊級作用域蜒简,故可以在for循環(huán)時(shí)聲明私有化變量。

25.結(jié)構(gòu)賦值的好處

1.可以一次性定義多個(gè)變量

2.可以讓一個(gè)函數(shù)返回多個(gè)值

3.可以作用在函數(shù)的傳參上漩仙,以對象的方式傳遞搓茬,可以無視參數(shù)的順序但形參與對象的鍵名要一致。

4.可以輕松實(shí)現(xiàn)兩個(gè)數(shù)的交換

26.什么是連綴調(diào)用

當(dāng)一個(gè)對象調(diào)用多個(gè)方法的時(shí)候队他,把它們連接起來調(diào)用就是連綴調(diào)用卷仑。

27.怎么解決定時(shí)器私有問題

把定時(shí)器賦值給一個(gè)私有變量即可,比如對象.變量名麸折,這個(gè)定時(shí)器就是私有的锡凝。

28.什么是對象和面向?qū)ο?/b>

對象是一個(gè)整體,具有屬性和方法的事物垢啼,對象也可以動態(tài)添加屬性和方法窜锯。

面向?qū)ο笫且环N高級的編程思想,是為了滿足不同的人的不同需求的功能而產(chǎn)生的芭析,這種思想就是把任何事物抽象成一個(gè)對象來對待锚扎,之后再對這個(gè)對象進(jìn)行相關(guān)的操作,實(shí)現(xiàn)相關(guān)需求的編程思想就是面向?qū)ο竽倨簦嫦驅(qū)ο罂梢宰審?fù)雜的編程簡單化驾孔,面向?qū)ο缶哂蟹庋b、繼承惯疙、多態(tài)的特點(diǎn)翠勉。

29.new做了哪些事

1.底層自動創(chuàng)建了一個(gè)對象

2.使得構(gòu)造函數(shù)中的this指向了實(shí)例對象

3.在實(shí)例對象中產(chǎn)生一個(gè)__proto__指針(是一個(gè)屬性),這個(gè)指針指向構(gòu)造函數(shù)的原型對象。使得實(shí)例對象能夠訪問原型對象下的屬性和方法霉颠。

30.怎么創(chuàng)建和調(diào)用原型對象

創(chuàng)建:1.用class創(chuàng)建類時(shí)对碌,在內(nèi)部直接創(chuàng)建的對象就是原型對象。

2.用new關(guān)鍵字對象時(shí)蒿偎,在對象的prototype屬性下創(chuàng)建的對象俭缓。

調(diào)用:只有在創(chuàng)建對象時(shí)內(nèi)部可以直接調(diào)用,對象外部無法訪問原型對象酥郭。

31.什么是實(shí)例屬性

創(chuàng)建構(gòu)造函數(shù)時(shí)實(shí)例化的屬性就是實(shí)例屬性

32.使用時(shí)間對象有哪些需要注意的

1.date.getYear是從1900年開始計(jì)算的华坦。

2.獲取的月是0-11月。

3.獲取的星期是0-6.

4.獲取的時(shí)間毫秒數(shù)是從1970年1月1日0時(shí)0分0秒開始計(jì)算

33.get和post的區(qū)別

1不从,參數(shù)傳遞的方式

get放在url

post放在請求體中

2,參數(shù)大小(由瀏覽器決定)

get后攜帶的參數(shù)大小,考慮瀏覽器的兼容性惜姐,一般在2k

post理論上沒有限制,tomcat可修改

3,安全性post比get要高。

4,請求速度

get比post快

5,post請求時(shí)歹袁,要先設(shè)置一個(gè)請求頭坷衍。get不需要

34.Ajax優(yōu)缺點(diǎn)

缺點(diǎn):

1.安全性不高

2.破壞了瀏覽器的機(jī)制

3.不利于瀏覽器搜索引擎的搜索

4.破壞了程序的異常機(jī)制,不利于程序維護(hù)

5.容易形成回調(diào)地獄,程序的可讀性不高条舔。

6.xhr不同的瀏覽器支持程序不同枫耳,所以在兼容性上有一定的不足。

優(yōu)點(diǎn):按需取數(shù)據(jù)孟抗,頁面無刷新迁杨。減少帶寬,降級開發(fā)成本凄硼。

請求速度快铅协。提升用戶體驗(yàn)。

35.如何實(shí)現(xiàn)跨域(偏后臺)

jsonp

xhr2 : cors

服務(wù)器代理

iframe

document.domain

36.原型鏈

原型鏈:實(shí)例對象中會自動生成__proto__指針摊沉,這個(gè)指針指向構(gòu)造函數(shù)的原型對象狐史,構(gòu)造函數(shù)的原型對象下還會有一個(gè)__proto__指向,這個(gè)指針指向父類的原型對象说墨,各個(gè)指向間形成的鏈條關(guān)系骏全。

37.Ajax原理

[if !supportLists]1.?[endif]實(shí)例化一個(gè)實(shí)例化對象xhr?=?new?XMLHttpRequest();

兼容ie6xhr?=?new?ActiveXObject("Microsoft.XMLHTTP");

[if !supportLists]2.?[endif]xhr.open(obj.method,obj.url);調(diào)用open傳方法和地址

[if !supportLists]3.?[endif]xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");如果是post請求要設(shè)置以上請求頭

xhr.send(data);數(shù)據(jù)傳data里

[if !supportLists]4.?[endif]xhr.onreadystatechange

監(jiān)聽請求是否成功

38.Cookie的特點(diǎn)

1.cookie是保存在電腦硬盤上的一個(gè)文件,內(nèi)容是一個(gè)字符串

2.Cookie是面向路徑的尼斧。缺省路徑 (path) 屬性時(shí)吟温,Web 服務(wù)器頁會自動傳遞當(dāng)前路徑給瀏覽器,指定路徑強(qiáng)制服務(wù)器使用設(shè)置的路徑

3.在一個(gè)目錄頁面里設(shè)置的 Cookie 在另一個(gè)目錄的頁面里是看不到的?

4.cookie存儲數(shù)據(jù)不安全

5.cookie存儲數(shù)據(jù)不能超過4kb 最多不能超過50條


39.關(guān)于ajax緩存問題

Ajax緩存問題是因?yàn)榘l(fā)送的請求地址一樣時(shí)突颊,會用本地緩存的數(shù)據(jù),這時(shí)潘悼,我們要的是重新獲取律秃,解決方法,在地址后面跟一個(gè)時(shí)間戳

40.什么是閉包治唤,優(yōu)缺點(diǎn)

閉包的概念:

???有權(quán)訪問另一個(gè)函數(shù)中私有變量的函數(shù)棒动,

??1,函數(shù)套函數(shù)

??2宾添,一個(gè)函數(shù)訪問了另一個(gè)函數(shù)中的變量

??注意:一般是將一個(gè)函數(shù)作為另一個(gè)函數(shù)的返回值來執(zhí)行

閉包的好處

??變量私有化船惨,避免命名空間的污染

??可以訪問其它函數(shù)的私有變量

閉包的缺點(diǎn)

??耗費(fèi)資源,有可能會造成內(nèi)存溢出缕陕。


41.繼承的幾種方式

1.普通繼承

2.call繼承?:?目的是為了改變父類的this指向

3.apply繼承?:?目的是為了改變父類的this指向

4.原型式(原型鏈):原理==將父類的實(shí)例對象賦值給子類的原型對象

5.組合繼承

????//原型式+call/apply

6.寄生組合繼承粱锐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扛邑,隨后出現(xiàn)的幾起案子怜浅,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恶座,死亡現(xiàn)場離奇詭異搀暑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)跨琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門自点,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脉让,你說我怎么就攤上這事桂敛。” “怎么了侠鳄?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵埠啃,是天一觀的道長。 經(jīng)常有香客問我伟恶,道長碴开,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任博秫,我火速辦了婚禮潦牛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挡育。我一直安慰自己巴碗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布即寒。 她就那樣靜靜地躺著橡淆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪母赵。 梳的紋絲不亂的頭發(fā)上逸爵,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音凹嘲,去河邊找鬼师倔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛周蹭,可吹牛的內(nèi)容都是我干的趋艘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凶朗,長吁一口氣:“原來是場噩夢啊……” “哼瓷胧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棚愤,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抖单,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矛绘,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耍休,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了货矮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羊精。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖囚玫,靈堂內(nèi)的尸體忽然破棺而出喧锦,到底是詐尸還是另有隱情,我是刑警寧澤抓督,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布燃少,位于F島的核電站,受9級特大地震影響铃在,放射性物質(zhì)發(fā)生泄漏阵具。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一定铜、第九天 我趴在偏房一處隱蔽的房頂上張望阳液。 院中可真熱鬧,春花似錦揣炕、人聲如沸帘皿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹰溜。三九已至,卻和暖如春丁恭,著一層夾襖步出監(jiān)牢的瞬間曹动,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工涩惑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桑驱。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓竭恬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熬的。 傳聞我的和親對象是個(gè)殘疾皇子痊硕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,793評論 0 38
  • 面試題按類型來分,主要涉及到“技術(shù)”與“非技術(shù)”兩大類押框,今天我們主要討論的是“技術(shù)類”岔绸,在這個(gè)大類別下涉及到的子類...
    simple_50a1閱讀 2,441評論 1 56
  • Java基礎(chǔ)面試 Java基礎(chǔ)面試... 1 1. Java基礎(chǔ)知識... 5 1.1. Java源程序的擴(kuò)展名是...
    來著何人閱讀 1,186評論 0 1
  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個(gè)如下例子,分析運(yùn)行結(jié)果: 代碼一: a = 1 def...
    時(shí)光清淺03閱讀 487評論 0 0
  • About Creating Today I waste my life Tomorrow I change my...
    TruakeStudio閱讀 288評論 0 1