整理前端面試常見問題

?1芋绸、離職多久了


2媒殉、大約多久到崗


3、離這里多遠


4摔敛、會考慮搬家嗎


5廷蓉、公司會加班


6、為什么要離職


7马昙、你們這個整個公司的技術(shù)團隊一共有幾個人


1桃犬、怎么獲取編輯頁當前數(shù)據(jù)下標和內(nèi)容


2、怎么獲取報錯消息


3行楞、loading動畫怎么用的


4攒暇、表單驗證報錯消息


5、vue里面子房,在哪個生命周期獲取滾動高度


? ? mounted? 掛載后 執(zhí)行完頁面渲染后的生命周期函數(shù)

6形用、mounted 是什么生命周期


? ? 掛載后

7、下拉加載更多怎么實現(xiàn)的


先獲取頁面總高度offsetheight证杭,然后獲取頁面可視高度clientheigth田度,最后獲取頁面滾動的高度scrollTop,如果說頁面可視高度加上頁面滾動高度大于等于頁面總高度躯砰,就再加載下一頁數(shù)據(jù)

8、在路由跳轉(zhuǎn)時候是怎么傳參的


? ? ? <router-link to="'/server/'+id"></router-link>? //拼接字符串

? ? ? 接收方式? this.$router.params

? ? ? <router-link to="{ path: '/user' ,query:? { ID : id } }"></router-link>? //query 傳參

? ? ? 接收方式? this.$router.query

? ? ? <router-link to="{ name: 'user' ,params:? { ID : id } }"></router-link>? //params 傳參

? ? ? 接收方式? this.$router.params


9携丁、什么時候路由傳參


? ? 跳轉(zhuǎn)詳情頁?

? ? 加入購物車

10琢歇、vuex數(shù)據(jù)和頁面交互


? ? vuex核心概念

? ? state --- 狀態(tài)

? ? actions --- 異步操作

? ? mutations --- 改變狀態(tài)的方法

? ? getter --- 計算屬性

? ? module --- 模塊

1)取 state 數(shù)據(jù)

? ? ? ? ? ? computed:{

? ? ? ? ? ? ? ? 屬性名(){

? ? ? ? ? ? ? ? ? ? return? this.$store.state.XXXX

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? 2) 調(diào)用 mutations

? ? ? ? ? ? methods:{

? ? ? ? ? ? ? ? 方法(){

? ? ? ? ? ? ? ? ? ? this.$store.commit("XXXX")

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? 3)調(diào)用 actions

? ? ? ? ? ? methods: {

? ? ? ? ? ? ? ? 方法(參數(shù)) {

? ? ? ? ? ? ? ? this.$store.dispatch("actions方法名", 參數(shù));

? ? ? ? ? ? ? ? }

? ? ? ? ? ?}

? ? ? ? 4)調(diào)用geeters

? ? ? ? ? ? computed: {

? ? ? ? ? ? ? ? 自定義屬性名() {

? ? ? ? ? ? ? ? ? ? return this.$store.getters.XXXX;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? },

11、vuex什么時候用到


? ? ? ?購物車 存儲數(shù)據(jù) 跨組件共享數(shù)據(jù)? 跳轉(zhuǎn)詳情頁

? ? ? 父子組件通信的話梦鉴,可以直接emit on,而多層嵌套組件通信就需要有vuex這樣的解決方案

12李茫、購物車怎么判斷重復添加值


? ? ? ?some? indexOf? ?findIndex? filter

?13、對this的理解


? ? ? ? ?當前發(fā)生事件的源

??? 1肥橙、普通函數(shù)? this 指向 window?

? ??2魄宏、事件 this 指向當前發(fā)生的元素,也就是事件本身

? ??3存筏、方法? this 指向當前方法

? ??4宠互、使用new 實例化對象? ? this? 指向空白對象(構(gòu)造函數(shù)中的this指向?qū)嵗瘜ο螅?/p>

? ??5、es6箭頭函數(shù) this? 指向 外層作用域的this

? ??6椭坚、定時器(除了es6)? this? 指向 window

14予跌、在json操作屬性(增,刪善茎,改券册,查)


? 增? ? ? ?json.name='12'? json[name]='12'

? 刪? ? ? ?一維數(shù)組刪除 delete json.name? ?二維數(shù)組刪除 delete?json[0];

? 改? ? ? ?json.name='45'? ?json[name]='45'

? 查? ? ? ?json.name

15、什么為真,什么為假


? ? ? ? 假:

? ??????????1烁焙、false (布爾型)

? ??????????2航邢、null (用于定義空的或者不存在的引用)

? ??????????3、undefined (未定義值)

? ??????????4骄蝇、0 (數(shù)值型)

? ??????????5膳殷、" " (空字符串) (字符型)

? ??????????6、NaN

? ? ? ? ? ? 7乞榨、null==undefined? true

? ? ? ? 真:

? ? ? ? ? ? ? 1秽之、1

? ? ? ? ? ? ? 2泽本、0==false

? ? ? ? ? ? ? 3玄货、!!1

? ? ? ? ? ? ? 4、!0

? ? ? ? ? ? ? 5臭猜、0!=1

? ? ? ? ? ? ? 6鹦倚、假的全部加上!

? ? ? ? ? ? ? 7河质、0==undefined? false

??????????????8、undefined===null? false

??????????????9震叙、undefined==true? false

? ? ? ? ? ? ?10掀鹅、undefined==false? false

? ? ? ? ? ???11、NaN==NaN? false

除了加號 其他的都會隱式轉(zhuǎn)換

17媒楼、輸入一個網(wǎng)址以后會發(fā)生什么


????????1乐尊、瀏覽器向DNS服務(wù)器請求解析URL中的域名對應的IP地址。

????????2划址、根據(jù)IP地址和默認端口扔嵌,和服務(wù)器建立TCP連接。

????????3夺颤、瀏覽器發(fā)出HTTP請求痢缎,該請求報文作為TCP三次握手的第三個報文的數(shù)據(jù)發(fā)送給服務(wù)器。

????????4世澜、服務(wù)器對瀏覽器做出響應独旷,并把html文本發(fā)送給瀏覽器。

????????5寥裂、釋放TCP連接

????????6嵌洼、瀏覽器解析HTML內(nèi)容,并對頁面進行渲染呈現(xiàn)給用戶封恰。

18咱台、get和post有什么區(qū)別


????????GET請求的參數(shù)是放在URL里的,POST請求參數(shù)是放在請求body里的

????????GET請求的URL傳參有長度限制俭驮,而POST請求沒有長度限制

????????GET請求的參數(shù)只能是ASCII碼回溺,所以中文需要URL編碼春贸,而POST請求傳參沒有這個限制

????????GET可以做分享和收藏?

????????GET 32k? POST 2G??

? ? ????GET傳輸方式在 地址欄 不安全 POST 傳輸在請求中?

19、深拷貝和淺拷貝


????????1遗遵、淺拷貝: 將原對象或原數(shù)組的引用直接賦給新對象萍恕,新數(shù)組,新對象/數(shù)組只是原對象的一個引用

????????2车要、深拷貝: 創(chuàng)建一個新的對象和數(shù)組允粤,將原對象的各項屬性的“值”(數(shù)組的所有元素)拷貝過來,是“值”而不是“引用”

????? ? 淺拷貝只是復制了對象的引用地址翼岁,兩個對象指向同一個內(nèi)存地址类垫,所以修改其中任意的值,另一個值都會隨之變化琅坡,這就是淺拷貝 也就是存放變量的棧內(nèi)存 Stack 在 堆內(nèi)存 heap 中開辟的新內(nèi)存 并且指向同一個定義的方法或數(shù)值中

? ? ? ? ? 深拷貝是將對象及值復制過來悉患,兩個對象修改其中任意的值另一個值不會改變,這就是深拷貝

20榆俺、你的項目優(yōu)勢在哪里


????????1售躁、一個頁面了解動態(tài)項目全局

????????????????在主頁面的時候 分別有動態(tài)條形圖 柱狀圖 圓形圖 可以更直觀的了解項目全局

????????2、進度逾期茴晋,超支自動預警

????????????????系統(tǒng)會自動預警車源不足陪捷,超支,資源超負荷等情況诺擅,盡可能早地發(fā)現(xiàn)和解決問題

????????3市袖、項目+業(yè)務(wù)一體化

????????????????通過項目管控合同的執(zhí)行,交付烁涌,成本以及收入苍碟,一個頁面可清晰了解成本與收入情況

????????4、加密性能強

????????????????非登陸不可進入烹玉,主要是保護了用戶的隱私驰怎,使用戶體驗更良好

21阐滩、堆和棧


????????堆:? 在計算機領(lǐng)域中 堆是隊列優(yōu)先 先進先出 內(nèi)存是( heap )內(nèi)存 存放的是 一些局部變量 存放的函數(shù)的參數(shù)值

????????棧:? 棧是先進后出? 內(nèi)存就是(stack)就是操作系統(tǒng)的自動分配 如果程序員不釋放二打,程序結(jié)束的時候就進行os回收機制

22、組件通信


????父子? ? --- props

? ? ? ????? 父組件? ---

? ? ? ? ? ????? < 子組件名? v-bind:自定義屬性名="要傳遞的值" ></子組件名>

? ? ? ????? 子組件

? ? ? ? ? ????? props:['自定義屬性名'],

? ? ? ? ? ????? {{ 自定義屬性名? }}

? ?子父? ? $emit

? ? ? ? 父組件

? ? ? ? ? ? <子組件? v-on:子組件定義的 自定義事件名="方法名"></子組件>

? ? ? ? ? ? methods:{

? ? ? ? ? ? ? ? 方法名(參數(shù)){

? ? ? ? ? ? ? ? ? ? 參數(shù) === 子組件 傳遞的數(shù)據(jù)

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? 子組件

? ? ? ? ? ? methods:{

? ? ? ? ? ? ? ? 事件(){

? ? ? ? ? ? ? ? ? ? this.$emit("自定義事件名",要傳遞的數(shù)據(jù))

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? 非父子(兄弟 爺孫? )?

? ? ? ? 創(chuàng)建一個 vue實例? ? ? $emit() 傳數(shù)據(jù)? ? $on() 取數(shù)據(jù)

? ? ? ? let bus=new Vue()

? ? ? ? 第一個組件 (兄) 傳數(shù)據(jù)

? ? ? ? ? ? methods:{

? ? ? ? ? ? ? ? 方法名(){

? ? ? ? ? ? ? ? ? ? bus.$emit("自定義事件名","要傳遞的數(shù)據(jù)")

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? 第二個組件 (弟) 接受數(shù)據(jù)

? ? ? ? ? ? 組件 生命周期函數(shù) / 鉤子函數(shù)? ? --組件已掛載

? ? ? ? ? ? mounted(){

? ? ? ? ? ? ? ? bus.$on("自定義事件名",(參數(shù))=>{

? ? ? ? ? ? ? ? ? ? 參數(shù) === 傳遞的數(shù)據(jù)

? ? ? ? ? ? ? ? })

? ? ? ? ? ? }

23掂榔、什么是閉包 談?wù)勀銓﹂]包的理解? 你在那些地方使用過閉包


 ????????1)什么是閉包:閉包是指有權(quán)訪問另一個函數(shù)作用域的變量的函數(shù)

? ????????????????? 如果有一個函數(shù)fun2继效,它可以訪問在其它函數(shù)如fun1中的局部變量,那么它(fun2)就是閉包装获。創(chuàng)建閉包的簡單方式瑞信,就在在函數(shù)內(nèi)部創(chuàng)建另一個函數(shù)

? ?如果不去釋放閉包,那么就會進行卡頓?

????????????2)

? ???????? ????(1)采用函數(shù)引用方式的setTimeout調(diào)用穴豫。 例子

? ???????????? (2)將函數(shù)關(guān)聯(lián)到對象的實例方法凡简。

? ???????????? (3)封裝相關(guān)的功能集逼友。

由于閉包會使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大秤涩,所以不能濫用閉包帜乞,否則會造成網(wǎng)頁的性能問題,在IE中可能導致內(nèi)存泄露筐眷。解決方法是黎烈,在退出函數(shù)之前,將不使用的局部變量全部刪除匀谣。

24照棋、你在開發(fā)移動端app的時候 都用過哪些app打包工具


25、vue和jq有什么區(qū)別 有什么共同點? 可以一起使用嗎


Vue 的用途在于視圖和數(shù)據(jù)的綁定武翎。如果通過JQuery 直接操作 DOM 的話烈炭,勢必會造成視圖數(shù)據(jù)和模型數(shù)據(jù)的不匹配,這樣 Vue 就失去它存在的意義了?

1后频、jQuery首先要獲取到dom對象梳庆,然后對dom對象進行進行值的修改等操作?

2、Vue是首先把值和js對象進行綁定卑惜,然后修改js對象的值膏执,Vue框架就會自動把dom的值就行更新。?

3露久、Vue操作的是虛擬DOM JQ操作的是真實DOM?

4更米、Vue則是通過Vue對象將數(shù)據(jù)和View完全分離開來了。對數(shù)據(jù)進行操作不再需要引用相應的DOM對象

26毫痕、在項目開發(fā)中 開發(fā)到連條過程中 和后端遇到過什么問題 怎么樣去解決的


? ? ? ? ? ? ? 聯(lián)條:前端自己模擬數(shù)據(jù)征峦,替換成后端的接口。

? ? ? ? ? ? ? 錯誤:自己定義的數(shù)據(jù)和后端定義的類型和名字不一樣消请,就會產(chǎn)生錯誤

27栏笆、http和https有什么區(qū)別


? ???一、傳輸信息安全性不同?

????????????1臊泰、http協(xié)議:是超文本傳輸協(xié)議蛉加,信息是明文傳輸。如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報文缸逃,就可以直接讀懂其中的信息针饥。?

????????????2、https協(xié)議:是具有安全性的ssl加密傳輸協(xié)議需频,為瀏覽器和服務(wù)器之間的通信加密丁眼,確保數(shù)據(jù)傳輸?shù)陌踩?/p>

? ???二、連接方式不同

????????????1昭殉、http協(xié)議:http的連接很簡單苞七,是無狀態(tài)的藐守。

????????????2、https協(xié)議:是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸蹂风、身份認證的網(wǎng)絡(luò)協(xié)議吗伤。? ??

?? ??三、端口不同?

?????????????1硫眨、http協(xié)議:使用的端口是80足淆。?

? ? ? ? ? ? ?2、https協(xié)議:使用的端口是443.?

? ? ?四礁阁、證書申請方式不同?

?????????????1巧号、http協(xié)議:免費申請。?

?????????????2姥闭、https協(xié)議:需要到ca申請證書丹鸿,一般免費證書很少,需要交費棚品。

28靠欢、常用的接口類型有哪些 分別說出他們的優(yōu)缺點


常見web接口:一類是http協(xié)議的接口,另一類是web service接口(如soup铜跑、rmi门怪、rpc協(xié)議)。本文主要介紹http請求接口锅纺。

常見的http請求方式包括:get(查)掷空、post(增),除此之外還有put(改)囤锉、delete(刪)等坦弟。

? ??GET:? 特點:1)請求數(shù)據(jù)量小,2)參數(shù)暴露于url地址中官地,故存在安全隱患

? ??POST:特點:請求數(shù)據(jù)量大酿傍,安全性高

? ??put型接口:put請求用于向指定資源位置上傳最新內(nèi)容

? ??delete型接口:請求服務(wù)器刪除請求里url所標識的資源

29、當你做數(shù)據(jù)交互的時候 出了問題主要看什么來判斷問題


看報錯

?????1xx 信息狀態(tài)碼 接收的請求正在處理?

?????2xx 成功狀態(tài)碼 請求正常處理完畢?

?????3xx 重定向狀態(tài)碼 需要進行附加操作以完成請求?

?????4xx 客戶端錯誤狀態(tài)碼 服務(wù)器無法處理請求?

?????5xx 服務(wù)器錯誤狀態(tài)碼 服務(wù)器處理請求出錯?

?????????301 Moved Permanently永久重定向驱入,表示請求的資源已被分配了新的 URI赤炒,以后應使用資源現(xiàn)在所指定的 URI?

?????????304 Not Modified 該狀態(tài)碼表示客戶端發(fā)送附帶條件的請求時,服務(wù)器端允許請求訪問資源沧侥,但是從緩存獲取資源?

????????400 Bad Request該狀態(tài)碼表示請求報文中存在語法錯誤可霎,當這種錯誤發(fā)生時魄鸦,需要修改請求內(nèi)容后再次發(fā)送請求?

????????403 Forbidden該狀態(tài)碼表明請求資源的訪問唄服務(wù)器拒絕了宴杀,服務(wù)器沒有必要給出拒絕的詳細理由。一般時訪問權(quán)限出現(xiàn)某些問題(如從未授權(quán)發(fā)送源 IP 地址試圖訪問)等情況都是可能發(fā)生 403 的?

????????404 Not Found該狀態(tài)碼表示服務(wù)器上無法找到請求的資源拾因,除此之外旺罢,也可以是服務(wù)器端拒絕請求且不行說明理由時使用 ?

????????500 Internal Server Error該狀態(tài)碼表示服務(wù)端在執(zhí)行請求時發(fā)生了錯誤旷余,也有可能是 web 應用存在的 bug 或某些臨時的故障

30、es6是什么 它在原先的基礎(chǔ)上做了什么改變 談?wù)勀愕睦斫狻?/h4>

什么是ES6呢扁达,簡單通俗的說就是netscape(網(wǎng)景)公司創(chuàng)造了javascript這個腳本語言正卧,主要是用來做check驗證的,當時的這個時期跪解,Sun公司的java這個語言火的不行不行的炉旷,netscape公司也主要是蹭熱點,所以給這個用于在客戶端做check驗證的腳本語言起名叫做javascript,netscape看見javascript被越來越多的使用叉讥,當時出現(xiàn)的腳本語言也很多窘行,就希望把它提交給國際化標準組織ECMA實行秦國的貨幣統(tǒng)一政策,ECMA發(fā)布的標準就叫做ECMASCRIPT图仓。


31.圣杯布局罐盔、雙飛翼布局、BFC布局有什么區(qū)別救崔,都怎樣實現(xiàn)惶看?


? ? ? ? ?1、圣杯布局:要求三列布局六孵,中間寬度自適應纬黎,兩邊定寬,這樣做的優(yōu)勢是重要的東西放在文檔流前面可以優(yōu)先渲染

? ? ? ? ? ? ????用到浮動劫窒、負邊距莹桅、相對定位,不添加額外標簽

? ???? ??2烛亦、雙飛翼布局:采用了浮動 float诈泼、負邊距 negative margin、相對定位 relative position來對div的位置改變煤禽,

? ?????????????????雙飛翼布局是在main的外層添加了一個容易铐达,從而padding就可以不用再最外層容器content上,

????????????????而是在main-wrap上用margin實現(xiàn)中間部分的自適應檬果!

? ??????3瓮孙、BFC布局:是一個獨立的渲染區(qū)域,并且有自己的一套渲染規(guī)則选脊,它決定了其子元素將如何定位杭抠,以及和其他元素的關(guān)系和相互作用

????????????????內(nèi)部元素的布局方式不會影響到外部元素的布局

32、節(jié)流和防抖


? ??????函數(shù)防抖(debounce):觸發(fā)高頻事件后n秒內(nèi)函數(shù)只會執(zhí)行一次恳啥,如果n秒內(nèi)高頻事件再次被觸發(fā)偏灿,則重新計算時間,只執(zhí)行最后一次钝的。

? ??????函數(shù)節(jié)流(throttle):高頻事件觸發(fā)翁垂,但在n秒內(nèi)只會執(zhí)行一次铆遭,所以節(jié)流會稀釋函數(shù)的執(zhí)行頻率。

????????函數(shù)節(jié)流(throttle)與函數(shù)防抖(debounce)都是為了限制函數(shù)的執(zhí)行頻次沿猜,以優(yōu)化函數(shù)觸發(fā)頻率過高導致的響應速度跟不上觸發(fā)頻率枚荣,出現(xiàn)延遲,假死或卡頓的現(xiàn)象啼肩。

? ? ?1橄妆、函數(shù)防抖(debounce)

????????實現(xiàn)方式:每次觸發(fā)事件時設(shè)置一個延遲調(diào)用方法,并且取消之前的延時調(diào)用方法

????????缺點:如果事件在規(guī)定的時間間隔內(nèi)被不斷的觸發(fā)祈坠,則調(diào)用方法會被不斷的延遲

? ???2呼畸、函數(shù)節(jié)流(throttle)

????????實現(xiàn)方式:每次觸發(fā)事件時,如果當前有等待執(zhí)行的延時函數(shù)颁虐,則直接return

?? ? 3蛮原、總結(jié)

????函數(shù)節(jié)流不管事件觸發(fā)有多頻繁,都會保證在規(guī)定時間內(nèi)一定會執(zhí)行一次真正的事件處理函數(shù)另绩,而函數(shù)防抖只是在最后一次事件后才觸發(fā)一次函數(shù)儒陨。 比如在頁面的無限加載場景下,我們需要用戶在滾動頁面時笋籽,每隔一段時間發(fā)一次 Ajax 請求蹦漠,而不是在用戶停下滾動頁面操作時才去請求數(shù)據(jù)。這樣的場景车海,就適合用節(jié)流技術(shù)來實現(xiàn)笛园。


33、預解析


????預解析規(guī)則

????????script:自上而下進行解析侍芝,變量函數(shù) 研铆,

????????函數(shù):由里到外進行解析。

????????但是瀏覽器在執(zhí)行JS代碼的時候會分成兩部分操作:預解析以及逐行執(zhí)行代碼

34州叠、js執(zhí)行過程


? ?????????1.? ? ?先統(tǒng)計多少變量和函數(shù)? 然后進行預解析

? ?????????2.? ? ?有多少方法 多少事件 多少定時器? 直接執(zhí)行函數(shù) 方法

????????? ?3.? ? ?執(zhí)行事件? 定時器? 各種事件? 然后進入事件流的執(zhí)行方法

35棵红、事件冒泡、事件捕獲咧栗、事件委托


????????????事件冒泡會從當前觸發(fā)的事件目標一級一級往上傳遞逆甜,依次觸發(fā),直到document為止致板。

? ? ? ? ? ? ? ? ? ? 監(jiān)聽事件捕獲? ?document.getElementById('box3').addEventListener('click', sayBox3, false);????????????

????????????事件捕獲會從document開始觸發(fā)交煞,一級一級往下傳遞,依次觸發(fā)斟或,直到真正事件目標為止素征。

? ? ? ? ? ? ????????監(jiān)聽事件捕獲? ?document.getElementById('box3').addEventListener('click', sayBox3, true);

? ? ? ? ??? 事件委托,通過監(jiān)聽一個父元素,來給不同的子元素綁定事件稚茅,減少監(jiān)聽次數(shù),從而提升速度

????????????????document.getElementById('isUl').addEventListener('click',function(event){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//判斷

? ? ? ? ? ? ? ? ? ? ?}

36平斩、阻止冒泡 和 阻止事件?


? ? ?? ?1.window.event.cancelBubble = true

????????????這是阻止事件的冒泡方法亚享,不讓事件向documen上蔓延,但是默認事件任然會執(zhí)行绘面,當你掉用這個方法的時候欺税,如果點擊一個連接,這個連接仍然會被打開揭璃,

????? ? 2.return false 晚凿;

????????????這個方法比較暴力,他會同事阻止事件冒泡也會阻止默認事件瘦馍;寫上此代碼歼秽,連接不會被打開,事件也不會傳遞到上一層的父元素情组;可以理解為return false就等于同時調(diào)用了event.stopPropagation()和event.preventDefault()

37燥筷、阻止事件捕獲


? ? ? ? ? ? 1.event.stopImmediatePropagation()??除此之外還會阻止該元素的其他事件發(fā)生

? ??????????2.event.preventDefault()??這是阻止默認事件的方法,調(diào)用此方法是院崇,連接不會被打開肆氓,但是會發(fā)生冒泡,冒泡會傳遞到上一層的父元素底瓣;


38谢揪、選擇器的優(yōu)先級


1、!important捐凭,加在樣式屬性值后拨扶,權(quán)重值為 10000

2、內(nèi)聯(lián)樣式茁肠,如:style=””屈雄,權(quán)重值為1000

3官套、ID選擇器奶赔,如:#content,權(quán)重值為100

4另伍、類摆尝,偽類和屬性選擇器温艇,如: content、:hover 權(quán)重值為10

5堕汞、標簽選擇器和偽元素選擇器勺爱,如:div、p讯检、:before 權(quán)重值為1

6琐鲁、通用選擇器(*)、子選擇器(>)人灼、相鄰選擇器(+)围段、同胞選擇器(~)、權(quán)重值為0

39投放、元素的類型


塊狀元素

????????1.塊狀元素在網(wǎng)頁中就是以塊的形式顯示奈泪,所謂塊狀就是元素顯示為矩形區(qū)域

????????????????常用的塊狀元素包塊div,dl,dt,dd,ol,ul,fieldset,(h1-h6),p,form,hr,colgroup,col,table,tr,td,等;

????????2.塊元素的特點:

????????????①默認情況下灸芳,塊狀元素都會獨占一行段磨,塊狀元素會按順序自上而下排列。

????????????②塊狀元素都可以直接定義自己的寬度和高度耗绿。

????????????③塊狀元素遵循盒模型的所有規(guī)則苹支,一般都作為其他元素的容器债蜜,它可以容納其它內(nèi)聯(lián)元素和其它塊狀元素。(p標簽除外)

內(nèi)聯(lián)元素

????????????1.常見的內(nèi)聯(lián)元素如:a,span,i,em,strong,b等

????????????2.內(nèi)聯(lián)元素的特點:

????????????????①內(nèi)聯(lián)元素其后如果是內(nèi)聯(lián)元素則會在一行內(nèi)逐個進行顯示狼速;

????????????????②內(nèi)聯(lián)元素顯示的寬度向胡、高度只能根據(jù)所包含內(nèi)容的高度和寬度來確定,不能直接定義它的寬和高拇派,它的最小內(nèi)容單元也會呈現(xiàn)矩形形狀;

????????????????③內(nèi)聯(lián)元素也會遵循盒模型基本規(guī)則骡显,但個別屬性不能正確顯示;

元素類型的轉(zhuǎn)換

?塊元素

? ? ? ? 設(shè)置寬高 獨占一行

????????????????????div p h1~h6

????????????????????dl dt dd

????????????????????ul li

????????????????????herder

????????????????????footer

????????????????????nav

行內(nèi)元素

????????不能設(shè)置寬高 不獨占一行 識別換行和空格

????????????????????a

????????????????????span

????????????????????em

????????????????????srong

行內(nèi)塊元素

????????支持寬高 不獨占一行??識別換行和空格

????????????????????img imput testext


37遭殉、常用的計時器


setTiemout、setInterval蛔糯、setImmediate、requestAnimationFrame淮逻。

setTiemout(超時調(diào)用启妹,只執(zhí)行一次)?

setInterval(間隔調(diào)用桨啃,如果不做處理會一直執(zhí)行) 。兩者的相同點:第一個參數(shù)為函數(shù),第二個為時間數(shù)

setImmediate: 在瀏覽器完全結(jié)束當前運行的操作之后立即執(zhí)行指定的函數(shù)(僅IE10和Node 0.10+中有實現(xiàn))队秩,類似setTimeout(func, 0)

requestAnimationFrame: 專門為實現(xiàn)高性能的幀動畫而設(shè)計的API,但是不能指定延遲時間鸟蟹,而是根據(jù)瀏覽器的刷新頻率而定(幀)

38、普通盒模型和怪異盒模型


標準盒模型:這種盒模型設(shè)置width的時候的值是內(nèi)容區(qū)的寬度,如果再設(shè)置padding和margin,border的話盒子的實際寬度會增大

計算寬度:padding*2+border*2+margin*2+content

怪異盒模型:這種盒子的width設(shè)置的值為盒子實際的寬度,border和padding的設(shè)置不會影響盒子的實際寬度和高度

計算寬度:content( padding和broder是往內(nèi)占用盒子的寬度欲险,故直接用總寬度就可以)

39槐壳、同步異步


同步:

????????????同步的思想是:所有的操作都做完,才返回給用戶。這樣用戶在線等待的時間太長崇堰,給用戶一種卡死了的感覺(就是系統(tǒng)遷移中檩互,點擊了遷移蚯斯,界面就不動了遭赂,但是程序還在執(zhí)行困肩,卡死了的感覺)。這種情況下芭毙,用戶不能關(guān)閉界面粘咖,如果關(guān)閉了,即遷移程序就中斷了。

異步:

????????????將用戶請求放入消息隊列,并反饋給用戶胀葱,系統(tǒng)遷移程序已經(jīng)啟動,你可以關(guān)閉瀏覽器了搂抒。然后程序再慢慢地去寫入數(shù)據(jù)庫去燕耿。這就是異步。但是用戶沒有卡死的感覺姜胖,會告訴你誉帅,你的請求系統(tǒng)已經(jīng)響應了。你可以關(guān)閉界面了右莱。

????同步蚜锨,是所有的操作都做完,才返回給用戶結(jié)果调煎。即寫完數(shù)據(jù)庫之后秫筏,在相應用戶堪伍,用戶體驗不好。

????異步抡砂,不用等所有操作等做完,就相應用戶請求售碳。即先相應用戶請求,然后慢慢去寫數(shù)據(jù)庫捧杉,用戶體驗較好。

39、原生ajax


1.1.2 Ajax的運行原理頁面發(fā)起請求胁住,會將請求發(fā)送給瀏覽器內(nèi)核中的Ajax引擎笋婿,Ajax引擎會提交請求到服務(wù)器端庇配,在這段時間里,客戶端可以進行任意操作误辑,直到服務(wù)器端將數(shù)據(jù)返回給Ajax引擎后,會觸發(fā)你設(shè)置的事件,從而執(zhí)行自定義的js邏輯代碼完成某種功能呛讲。Ajax異步請求與同步請求對比如下圖所示禾怠。

40、js三大組成


1.ECMAScript 2.DOM(document object model)3.BOM(browser object document )?

(1)ECMA是(歐洲計算機制造商協(xié)會)它規(guī)定了js的語法標準贝搁。?

(2)DOM是文檔對象模型吗氏,規(guī)定了文檔的顯示結(jié)構(gòu),可以輕松地刪除雷逆、添加和替換節(jié)點?

(3)BOM是瀏覽器對象模型弦讽,就是瀏覽器自帶的一些功能樣式,如搜索框膀哲,設(shè)置坦袍,等學習瀏覽器窗口交互的對象

41、1rem等于多少px


1rem等于html根元素設(shè)定的font-size的px值等太,假如我們在css里面設(shè)定下面的css捂齐。

html{font-size:14px}

那么后面的CSS里面的rem值則是以這個14來換算,例如設(shè)定一個div寬度為3rem,高度為2.5rem.則它換算成px為width:42px.height:35px缩抡,同理奠宜,假如一個設(shè)計稿為寬度42px,高度為35px,則換成成rem瞻想,則是42/14=3rem压真,35/14=2.5rem。

如果css里面沒有設(shè)定html的font-size蘑险,則默認瀏覽器以1rem=16px來換算滴肿。

42、op和oop的區(qū)別



43佃迄、jsonp實現(xiàn)原理


????一般使用ajax請求數(shù)據(jù)泼差,但是ajax有同源策略,也就是不能請求跨域呵俏,但是堆缘,我們發(fā)現(xiàn)了script中的src屬性不受跨域的影響,所以就可以動態(tài)的創(chuàng)建src設(shè)置屬性普碎, 所以就產(chǎn)生了jsonp吼肥,jsonp屬于一種非正式傳輸協(xié)議,這個協(xié)議主要就是客戶端向服務(wù)器發(fā)送一個callback的參數(shù),然后服務(wù)器會返回一個callback(回調(diào)函數(shù))參數(shù)包裹住json數(shù)據(jù)缀皱,然后就可以使用回調(diào)函數(shù)來操作服務(wù)器返回過來的數(shù)據(jù)

所謂同源是指域名斗这,協(xié)議,端口相同啤斗。

44表箭、js 處理過那些兼容問題


? ??????????1、鍵盤事件兼容

????????????????????vareve=eve||window.eventvarkeyC=eve.keyCode||eve.which

? ? ? ? ? ? 2争占、獲取觸發(fā)的事件源

????????????????????vartarget=e.target||e.srcElement;

? ? ? ? ? ? 3燃逻、阻止事件冒泡兼容

? ? ? ? ? ? ? ? ? ? eve.stopPropagation(); eve.cancelBubble=true;//兼容IE`

? ? ? ? ? ? 4、事件對象兼容

????????????????? ? IE中:? ? ?window.event

? ? ? ? ? ? ? ? ? ? 正常瀏覽器中:? ? 對象.on事件 = function(event){}

? ? ? ? ? ? ? ? ? ? 兼容方式:

? ? ????????????????? function fn(eve){

? ? ? ? ????????????????? var e = eve || window.event;

? ? ????????????????? }

? ? ? ? ? ? ?1臂痕、 滾動條兼容:

????????????????????? document.documentElement.scrollTop||document.body.scrollTop

? ??????????2伯襟、網(wǎng)頁可視區(qū)域兼容

? ???????????????????? window.innerHeight || document.documentElement.clientHeight

?????????????????? ????window.innerWidth || document.documentElement.clientWidth?


44、字符串和數(shù)組常用方法


字符串的方法

? ? ? ? ? ? ? ? join:分隔字符串

????????????????indexOf:第一次出現(xiàn)的位置握童,返回-1姆怪,表示字符串沒有該字符

????????????????concat(),連接兩個或多個字符串澡绩,返回連接后的新字符串稽揭。

????????????????trim:去掉字符串兩端多余空格

????????????????length:字符串長度

????????????????split:分割字符串成數(shù)組

? ? ? ? ? ? ? ? match(),找到一個或者多個子串或者正則表達式的匹配肥卡。

????????????????slice()溪掀,提取字符串中兩個指定索引號之間的字符(索引可以為負值,-1就是倒數(shù)第二位)

????????????????toString()步鉴,返回字符串對象揪胃,比如把數(shù)字轉(zhuǎn)換成字符串對象。

? ?數(shù)組的方法

? ?????? ? ? ???Array.map()? ? ??遍歷輸出數(shù)組內(nèi)容

????????????????Array.forEach()? 遍歷輸出數(shù)組內(nèi)容

????????????????Array.filter()? ? ? ? 過濾輸出所需內(nèi)容

????????????????Array.some()? ? ? 根據(jù)指定條件判斷返回一個布爾值氛琢,則返回true喊递,若所有元素都不滿足判斷條件,則返回false:

????????????????Array.push()? ? ? 數(shù)組的后面添加新加元素

????????????????Array.pop()????????數(shù)組后面刪除最后一個元素

????????????????Array.shift()????????數(shù)組后面刪除第一個元素

????????????????Array.unshift()????一個或多個元素添加到數(shù)組的開頭

????????????????Array.concat()? ? 此方法是一個可以將多個數(shù)組拼接成一個數(shù)組

45阳似、ready 和onload的區(qū)別


? ??onload:

????????????加載時機:必須等待網(wǎng)頁全部加載完畢之后再執(zhí)行JS代碼

????????????執(zhí)行次數(shù):只執(zhí)行一次骚勘,如果第二次,就會覆蓋第一次

? ??ready:

????????????加載時機撮奏,等到DOM結(jié)構(gòu)完成之后就可以JS代碼

????????????執(zhí)行次數(shù):可以執(zhí)行多次俏讹,且不會覆蓋之前

????????????簡寫$(function(){})

46、瀏覽器的內(nèi)核有哪些


????????1挽荡、Trident內(nèi)核:IE最先開發(fā)或使用的藐石,也稱IE內(nèi)核,360瀏覽器使用的也是IE內(nèi)核定拟;

????????2、Webkit內(nèi)核:谷歌chrome瀏覽器最先開發(fā)或使用,也叫谷歌內(nèi)核青自,楓樹瀏覽器株依、太陽花使用的也是谷歌內(nèi)核;

????????3延窜、Gecko內(nèi)核: Netscape6開始采用的內(nèi)核恋腕,后來的Mozilla FireFox (火狐瀏覽器) 也采用了該內(nèi)核,K-Meleon瀏覽器也是使用這種內(nèi)核逆瑞;

????????4荠藤、Presto內(nèi)核:目前只有Opera瀏覽器采用該內(nèi)核

47、vue插槽


? ??什么是插槽获高?

????????插槽(Slot)是Vue提出來的一個概念哈肖,正如名字一樣,插槽用于決定將所攜帶的內(nèi)容念秧,插入到指定的某個位置淤井,從而使模板分塊,具有模塊化的特質(zhì)和更大的重用性摊趾。

????????插槽顯不顯示币狠、怎樣顯示是由父組件來控制的,而插槽在哪里顯示就由子組件來進行控制

? ??????一砾层、插槽內(nèi)容

  ? ? ? ? ? ? ?一句話:插槽內(nèi)可以是任意內(nèi)容漩绵。

????????????????????父組件:? 引入子組件 <zi> 123 </zi>

????????????????????子組件:? <slot></slot>

? ??????二、具名插槽

????????????????????具名插槽肛炮,就是給這個插槽起個名字止吐,slot屬性對應的內(nèi)容都會和組件中name一一對應。

????????????????????父組件:<template slot="girl">我是子組件中name為‘girl’的內(nèi)容</template?>

? ? ? ? ? ? ? ? ? ? 子組件:<slot name="girl"></slot>

48铸董、怎么判斷瀏覽器類型


????var userAgent = navigator.? ? e; //取得瀏覽器的userAgent字符串

? ? var isOpera = userAgent.indexOf("Opera") > -1;

? ? ?//判斷是否Opera瀏覽器

? ????????????? if (isOpera) {

? ? ? ? ????????????????return "Opera"

? ????????????? };

? ? //判斷是否Firefox瀏覽器

? ? ????????????if (userAgent.indexOf("Firefox") > -1) {

? ? ? ? ? ? ? ? ? ? ? ? ?return "FF";

????????????? ? }

? ? //判斷是否chorme瀏覽器

? ????????????? if (userAgent.indexOf("Chrome") > -1){

????????????????????????return "Chrome";

? ????????????? }

? ? //判斷是否Safari瀏覽器

? ? ????????????if (userAgent.indexOf("Safari") > -1) {

? ? ? ????????????????? return "Safari";

? ????????????? }

? ? //判斷是否IE瀏覽器

? ????????????? if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {

? ????????????????? ? ? return "IE";

? ????????????? }

? ? //判斷是否Edge瀏覽器

? ? ????????????if (userAgent.indexOf("Trident") > -1) {

? ? ? ????????????????? return "Edge";

????????????? ? };

49祟印、mvc,mvvm,mvp分別有什么區(qū)別?


M(Model)V(View)M(Controller)

View:視圖:用戶界面--是直接面向最終用戶的“視圖層”粟害,是能與用戶操作交互的界面蕴忆。

Model:模型:數(shù)據(jù)保存--是核心的“數(shù)據(jù)層”,是程序要操作的數(shù)據(jù)或信息悲幅。

Controller:控制器:業(yè)務(wù)邏輯--負責根據(jù)用戶從“視圖層”輸入 的指令套鹅,選取“數(shù)據(jù)層”中的數(shù)據(jù),然后對其進行相應操作后汰具,產(chǎn)生最后結(jié)果卓鹿。

MVP 模式將 Controller 改名為 Presenter,同時改變了通信方向


M(Model)V(View)P(Presenter)

1留荔、各部分之間的通信吟孙,都是雙向的。

2、View 與 Model 不發(fā)生聯(lián)系杰妓,都通過 Presenter 傳遞藻治。

3、View 非常薄巷挥,不部署任何業(yè)務(wù)邏輯桩卵,稱為"被動視圖"(Passive View),即沒有任何主動性倍宾,而 Presenter非常厚雏节,所有邏輯都部署在那里。


M(Model)V(View)V(View)M(ViewModel)

MVVM 模式將 Presenter 改名為 ViewModel高职,基本上與 MVP 模式完全一致钩乍。

唯一的區(qū)別是,它采用雙向綁定(data-binding):View的變動初厚,自動反映在 ViewModel件蚕,反之亦然。Angular?和?Ember?都采用這種模式产禾。


50排作、面向?qū)ο蟆⒚嫦蜻^程


1亚情、面向?qū)ο?/b>

????????????面向?qū)ο蟮木幊痰闹饕枷胧前褬?gòu)成問題的各個事物分解成各個對象妄痪,建立對象的目的不是為了完成一個步驟,而是為了描述一個事物在解決問題的過程中經(jīng)歷的步驟和行為楞件。對象作為程序的基本單位衫生,將程序和數(shù)據(jù)封裝其中,以提高程序的重用性土浸,靈活性和可擴展性罪针。類是創(chuàng)建對象的模板,一個類可以創(chuàng)建多個對象黄伊。對象是類的實例化泪酱。

類是 抽象的,不占用存儲空間还最;而對象具體的墓阀,占用存儲空間。

面向?qū)ο笥腥筇匦裕悍庋b拓轻,繼承斯撮,多態(tài)。

面向過程就是分析出解決問題所需要的步驟扶叉,然后用函數(shù)把這些步驟一步一步實現(xiàn)勿锅,使用的時候一個一個依次調(diào)用就可以了帕膜。

面向?qū)ο?/a>是把構(gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟粱甫,而是為了描敘某個事物在整個解決問題的步驟中的行為泳叠。


51作瞄、Vue的雙向數(shù)據(jù)綁定原理


Vue采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方法茶宵,通過Object.defineProperty()來劫持各個屬性的setter,getter屬性,在數(shù)據(jù)變動話宗挥,通知訂閱者乌庶,觸發(fā)更新回調(diào)函數(shù),重新渲染視圖

????a契耿、 Vue 將遍歷data對象中的所有的屬性瞒大,并使用 Object.defineProperty 把這些屬性全部加上set和get訪問

? ? b、 這樣在修改data的屬性值的時候搪桂,會觸發(fā)set方法透敌,那么set方法主要有兩個作用,一是改變data里面的屬性值踢械,二是發(fā)出數(shù)據(jù)變化的通知酗电。

? ? c、 Observer作為數(shù)據(jù)的觀察者内列,當數(shù)據(jù)發(fā)生變化set會發(fā)出通知撵术,會被Observer觀察到,然后通知到Watcher话瞧,最后更新視圖

52嫩与、回調(diào)函數(shù)是干什么的


????執(zhí)行時機不確定的時候 需要得到數(shù)據(jù)時

回調(diào)函數(shù)!

????回調(diào)函數(shù)對于許多同學不陌生交排。ajax就是很好的例子

????回調(diào)函數(shù)究竟是什么划滋?

? ??????????回調(diào)函數(shù)就是一個參數(shù),將這個函數(shù)作為參數(shù)傳到另一個函數(shù)里面埃篓,當那個函數(shù)執(zhí)行完之后处坪,再執(zhí)行傳進去的這個函數(shù)。這個過程就叫做回調(diào)

? ? ? ? ? ??通俗一點都许,就是把方法體當成參數(shù)傳遞給另一個方法體稻薇,然后另一個方法體內(nèi)部執(zhí)行傳遞的方法體。并支持傳入?yún)?shù)

53胶征、全局變量塞椎、局部變量、閉包


全局變量

????好處:每個地方都可以訪問到??

????壞處:耗性能 所有地方都監(jiān)聽? 等到瀏覽器關(guān)閉以后才會釋放?

局部變量

????在函數(shù)內(nèi)? 因為函數(shù)才會有作用域

????壞處:只能用在指定的代碼里面

????好處:在不用的時候 內(nèi)存直接釋放了??

閉包

????好處:子函數(shù)可以使用父函數(shù)的局部變量

????壞處:不去釋放 就會存在整個作用域上

????用好的話 就是好的東西? 用不好就是特別占性能的東西 return釋放

54睛低、塊級作用域


? ? ? ? ?ES5 中作用域有:全局作用域案狠、函數(shù)作用域服傍。沒有塊作用域的概念。

???????? ES6 中新增了塊級作用域骂铁。塊作用域由 { } 包括吹零,if語句和 for語句里面的{ }也屬于塊作用域。

55拉庵、var灿椅、let、const的區(qū)別


????var? ?? ? 定義的變量钞支,沒有塊的概念茫蛹,可以跨塊訪問, 不能跨函數(shù)訪問。

????let? ? ? ??定義的變量烁挟,只能在塊作用域里訪問婴洼,不能跨塊訪問,也不能跨函數(shù)訪問撼嗓。

? ??const? 用來定義常量柬采,使用時必須初始化(即必須賦值),只能在塊作用域里訪問且警,而且不能修改粉捻。

56、本地存儲有多少種振湾,分別有哪些特點


cookie?數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要)杀迹,即cookie在瀏覽器和服務(wù)器間來回傳遞。而sessionStorage和 localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器押搪,僅在本地保存树酪。

Cookie? 小 數(shù)據(jù)不能超過4k

LocalStorage 和 sessionStorage 5M 數(shù)據(jù)有效期不同

LocalStorage? ? 永久保存? 數(shù)據(jù)可以共享

sessionStorage? 會話級 關(guān)閉窗口就銷毀 數(shù)據(jù)不能共享

57、前后端分離和不分離區(qū)別


不分離?

優(yōu)點:最大優(yōu)勢就是安全 便于優(yōu)化? 項目清晰? 接口優(yōu)化? 便于 su 優(yōu)化??

缺點:傳輸?shù)脑挃?shù)據(jù)量比較大?用戶體驗不太好? 獲取數(shù)據(jù) 分頁 必須刷新頁面 不便于以后的維護和修改 所有代碼混合在一起 不便于修改

分離?

優(yōu)點:分工明確 用戶體驗良好 ajax請求不用刷新頁面? 后端提供接口 優(yōu)化數(shù)據(jù)庫? 前端 根據(jù)后端的數(shù)據(jù)接口 渲染頁面 做功能??

58大州、es6類的繼承


59续语、vue指令實現(xiàn)原理


通過正則判斷 獲取整個頁面 整個字符串? 通過字符串進行匹配

通過正則截取標簽 然后進行正則操作

60、同時獲取多個接口


1厦画、axios all 數(shù)據(jù)獲取過來 然后返回過來

functiongetUserAccount(){? ? //第一個請求

? return axios.get('/user/12345');

}

functiongetUserPermissions(){? //第二個請求

? return axios.get('/user/12345/permissions');

}

axios.all([getUserAccount(), getUserPermissions()])

? .then(axios.spread(function(acct, perms){

? ? console.log('兩個請求都完成了')

? }));

2疮茄、

61、基本類型和引用類型


 JS分兩種數(shù)據(jù)類型:

基本數(shù)據(jù)類型Number根暑、String力试、Boolean、Null排嫌、?Undefined畸裳、Symbol(ES6),這些類型可以直接操作保存在變量中的實際值淳地。

引用數(shù)據(jù)類型object怖糊、array帅容、function、data等(在JS中除了基本數(shù)據(jù)類型以外的都是對象伍伤,數(shù)據(jù)是對象并徘,函數(shù)是對象,正則表達式是對象)

1扰魂、聲明變量時內(nèi)存分配不同

 *原始類型:在棧中麦乞,因為占據(jù)空間是固定的,可以將他們存在較小的內(nèi)存中-棧中阅爽,這樣便于迅速查詢變量的值

 *引用類型:存在堆中路幸,棧中存儲的變量,只是用來查找堆中的引用地址付翁。

 ? ?這是因為:引用值的大小會改變,所以不能把它放在棧中晃听,否則會降低變量查尋的速度百侧。相反,放在變量的椖馨牵空間中的值是該對象存儲在堆中的地址佣渴。地址的大小是固定的,所以把它存儲在棧中對變量性能無任何負面影響

2初斑、不同的內(nèi)存分配帶來不同的訪問機制

在javascript中是不允許直接訪問保存在堆內(nèi)存中的對象的辛润,所以在訪問一個對象時,首先得到的是這個對象在堆內(nèi)存中的地址见秤,然后再按照這個地址去獲得這個對象中的值砂竖,這就是傳說中的按引用訪問

? ? 而原始類型的值則是可以直接訪問到的鹃答。

3乎澄、復制變量時的不同

1)原始值:在將一個保存著原始值的變量復制給另一個變量時,會將原始值的副本賦值給新變量测摔,此后這兩個變量是完全獨立的置济,他們只是擁有相同的value而已。

2)引用值:在將一個保存著對象內(nèi)存地址的變量復制給另一個變量時锋八,會把這個內(nèi)存地址賦值給新變量浙于,

    也就是說這兩個變量都指向了堆內(nèi)存中的同一個對象,他們中任何一個作出的改變都會反映在另一個身上挟纱。

(這里要理解的一點就是羞酗,復制對象時并不會在堆內(nèi)存中新生成一個一模一樣的對象,只是多了一個保存指向這個對象指針的變量罷了)樊销。多了一個指針

4整慎、參數(shù)傳遞的不同(把實參復制給形參的過程)

首先我們應該明確一點:ECMAScript中所有函數(shù)的參數(shù)都是按值來傳遞的脏款。

但是為什么涉及到原始類型與引用類型的值時仍然有區(qū)別呢?還不就是因為內(nèi)存分配時的差別裤园。

  1)原始值:只是把變量里的值傳遞給參數(shù)撤师,之后參數(shù)和這個變量互不影響。

  2)引用值:對象變量它里面的值是這個對象在堆內(nèi)存中的內(nèi)存地址拧揽,這一點你要時刻銘記在心剃盾!

    因此它傳遞的值也就是這個內(nèi)存地址,這也就是為什么函數(shù)內(nèi)部對這個參數(shù)的修改會體現(xiàn)在外部的原因了淤袜,因為它們都指向同一個對象痒谴。


62、優(yōu)化代碼


63铡羡、async / await


????????通常async积蔚、await都是跟隨Promise一起使用的。為什么這么說呢烦周?因為async返回的都是一個Promise對象同時async適用于任何類型的函數(shù)上尽爆。這樣await得到的就是一個Promise對象(如果不是Promise對象的話那async返回的是什么?就是什么);

????????await得到Promise對象之后就等待Promise接下來的resolve或者reject读慎。

?async?函數(shù)返回的是一個promise?對象漱贱,有兩個參數(shù) 一個是返回結(jié)果Promise.solve()? 一個是錯誤結(jié)果Promise.reject(),如果要獲取到promise?返回值夭委,我們應該用then?方法幅狮,但如果函數(shù)內(nèi)部拋出錯誤,就應該用catch 方法

????await 函數(shù)從字面意思上是“等待”的意思株灸,就是用于等待異步完成崇摄。并且await只能在async函數(shù)中使用

64、es5和es6面向?qū)ο髤^(qū)別


es5沒有真正的面向?qū)ο?不存在真正的一個類

es6有面向?qū)ο筮@種東西? 屬性放在 構(gòu)造函數(shù)里面? 方法放在類里面

65蚂且、vue中生命周期


beforeCreate( 創(chuàng)建前 )

????????在實例初始化之后配猫,數(shù)據(jù)觀測和事件配置之前被調(diào)用,此時組件的選項對象還未創(chuàng)建杏死,el 和 data 并未初始化泵肄,因此無法訪問methods, data淑翼, computed等上的方法和數(shù)據(jù)腐巢。

created ( 創(chuàng)建后 )

????????實例已經(jīng)創(chuàng)建完成之后被調(diào)用,在這一步玄括,實例已完成以下配置:數(shù)據(jù)觀測冯丙、屬性和方法的運算,watch/event事件回調(diào)遭京,完成了data 數(shù)據(jù)的初始化胃惜,el沒有泞莉。 然而,掛在階段還沒有開始, $el屬性目前不可見船殉,這是一個常用的生命周期鲫趁,因為你可以調(diào)用methods中的方法,改變data中的數(shù)據(jù)利虫,并且修改可以通過vue的響應式綁定體現(xiàn)在頁面上挨厚,,獲取computed中的計算屬性等等糠惫,通常我們可以在這里對實例進行預處理疫剃,也有一些童鞋喜歡在這里發(fā)ajax請求,值得注意的是硼讽,這個周期中是沒有什么方法來對實例化過程進行攔截的巢价,因此假如有某些數(shù)據(jù)必須獲取才允許進入頁面的話,并不適合在這個方法發(fā)請求理郑,建議在組件路由鉤子beforeRouteEnter中完成

beforeMount(掛載前)

????????掛在開始之前被調(diào)用蹄溉,相關(guān)的render函數(shù)首次被調(diào)用(虛擬DOM),實例已完成以下的配置: 編譯模板您炉,把data里面的數(shù)據(jù)和模板生成html,完成了el和data 初始化役电,注意此時還沒有掛在html到頁面上赚爵。

mounted(掛載后)

????????掛在完成,也就是模板中的HTML渲染到HTML頁面中法瑟,此時一般可以做一些ajax操作冀膝,mounted只會執(zhí)行一次。

beforeUpdata (更新前)

????????在數(shù)據(jù)更新之前被調(diào)用霎挟,發(fā)生在虛擬DOM重新渲染和打補丁之前窝剖,可以在該鉤子中進一步地更改狀態(tài),不會觸發(fā)附加地重渲染過程

updated (更新后)

????????在由于數(shù)據(jù)更改導致地虛擬DOM重新渲染和打補丁只會調(diào)用酥夭,調(diào)用時赐纱,組件DOM已經(jīng)更新,所以可以執(zhí)行依賴于DOM的操作熬北,然后在大多是情況下疙描,應該避免在此期間更改狀態(tài),因為這可能會導致更新無限循環(huán)讶隐,該鉤子在服務(wù)器端渲染期間不被調(diào)用

beforeDestrioy (銷毀前)

????????在實例銷毀之前調(diào)用起胰,實例仍然完全可用,

????????這一步還可以用this來獲取實例巫延,

????????一般在這一步做一些重置的操作效五,比如清除掉組件中的定時器 和 監(jiān)聽的dom事件

destroyed(銷毀后)

????????在實例銷毀之后調(diào)用地消,調(diào)用后,所以的事件監(jiān)聽器會被移出畏妖,所有的子實例也會被銷毀脉执,該鉤子在服務(wù)器端渲染期間不被調(diào)用

66、v-show 和 v-if 的區(qū)別


相同點:v-if與v-show都可以動態(tài)控制dom元素顯示隱藏

不同點:v-if顯示隱藏是將dom元素整個添加或刪除瓜客,而v-show隱藏則是為該元素添加css--display:none适瓦,dom元素還在。

67谱仪、塊級作用域


在ES5中玻熙,只全局作用域和函數(shù)作用域。這會導致函數(shù)作用域覆蓋了全局作用域疯攒;亦或者循環(huán)中的變量泄露為全局變量嗦随。

用let命令新增了塊級作用域,外層作用域無法獲取到內(nèi)層作用域敬尺,非常安全明了枚尼。即使外層和內(nèi)層都使用相同變量名,也都互不干擾砂吞。

68署恍、暫時性死區(qū)


ES6新增了let命令,用來聲明變量蜻直。它的用法類似于var盯质,但是所聲明的變量,只在let命令所在的代碼塊內(nèi)有效概而。

和var不同的還有呼巷,let命令不存在變量提升,所以聲明前調(diào)用變量赎瑰,都會報錯王悍,這就涉及到一個概念——暫時性死區(qū)。

暫時性死區(qū):

只要塊級作用域內(nèi)存在let命令餐曼,它所聲明的變量就“綁定”(binding)這個區(qū)域压储,不再受外部的影響。

69晋辆、局部變量怎么在外部訪問到


1渠脉、去掉 var? ??

2、return?

3瓶佳、綁定到window上

4芋膘、使用對象方式??

5、閉包

70、js綁定事件以及解除


????綁定事件:addEventListener

????解綁事件:removeEventListener

????阻止事件冒泡:event.stopPropagation

????取消默認事件:event.preventDefault

????IE7~8:? attachEvent()和derachEvent()

????tips:onblur

71为朋、移動端事件的集合


? ??touchstart: 當手指觸摸屏幕的時候出發(fā)

? ??touchmove: 當手指在屏幕移動的時候

? ??touchend: 手指離開屏幕的時候觸發(fā)

? ??touchcancel:? 當被迫中止滑動的時候觸發(fā)(彈消息臂拓,來電等等)

72、import和link有什么區(qū)別


? ??1.從屬關(guān)系區(qū)別

????????????@import是 CSS 提供的語法規(guī)則习寸,只有導入樣式表的作用胶惰;link是HTML提供的標簽,不僅可以加載 CSS 文件霞溪,還可以定義 RSS孵滞、rel 連接屬性等。

? ??2.加載順序區(qū)別

????????????加載頁面時鸯匹,link標簽引入的 CSS 被同時加載爽待;@import引入的 CSS 將在頁面加載完畢后被加載嫂沉。

? ??3.兼容性區(qū)別

????????????@import是 CSS2.1 才有的語法后控,故只可在 IE5+ 才能識別狂窑;link標簽作為 HTML 元素,不存在兼容性問題染厅。

? ??4.DOM可控性區(qū)別

????????????可以通過 JS 操作 DOM 痘绎,插入link標簽來改變樣式;由于 DOM 方法是基于文檔的肖粮,無法使用@import的方式插入樣式孤页。

? ??5.權(quán)重區(qū)別(該項有爭議,下文將詳解)

????????????link引入的樣式權(quán)重大于@import引入的樣式涩馆。

73散庶、vue核心


Vue核心思想:數(shù)據(jù)驅(qū)動、組件化

????數(shù)據(jù)(model)改變驅(qū)動視圖(view)自動更新

74凌净、普通函數(shù)和箭頭函數(shù)的區(qū)別


????普通函數(shù)

????????普通函數(shù)的this總是指向它的直接調(diào)用者。

????????在嚴格模式下屋讶,沒找到直接調(diào)用者冰寻,則函數(shù)中的this是undefined。

????????在默認模式下(非嚴格模式)皿渗,沒找到直接調(diào)用者斩芭,則函數(shù)中的this指向window。

????箭頭函數(shù)

????????箭頭函數(shù)中的this始終指向其父級作用域中的this

????????任何方法都改變不了其指向乐疆,如call(), bind(), apply()

75划乖、router-link和a標簽的區(qū)別


最本質(zhì)的區(qū)別是 對比<a>,Link組件避免了不必要的重渲染

通過a標簽進行跳轉(zhuǎn),頁面會被重新渲染挤土,即相當于重新打開一個新的網(wǎng)頁琴庵,體現(xiàn)為視覺上的“閃爍”(如果是本地的項目基本看不出來)

通過router-link進行跳轉(zhuǎn)不會跳轉(zhuǎn)到新的頁面,也不會重新渲染,它會選擇路由所指的組件進行渲染迷殿,避免了重復渲染的“無用功”

76儿礼、行為 樣式 結(jié)構(gòu) 分離


????行為:js??

????樣式:css??

????結(jié)構(gòu):html??

????分離:html? 分離不寫行內(nèi)樣式

77、form和ajax區(qū)別


1.ajax在提交庆寺,請求蚊夫,接收時,都是異步進行的懦尝,網(wǎng)頁不需要刷新知纷。

????from表單提交時是新建一個頁面,哪怕是提交給自己本身的頁面陵霉,也是需要刷新的琅轧。

2.ajax在提交時,是在后臺新建一個請求撩匕。

????from表單趨勢放棄本頁面鹰晨,再次申請。

3.ajax必須使用js來實現(xiàn)止毕,不啟用js的瀏覽器模蜡,無法完成操作。

????from是瀏覽器的功能扁凛,無論是否開啟js忍疾,都可以提交表單。

4.ajax在提交谨朝,請求卤妒,接收時,整個過程都是需要使用程序來對其數(shù)據(jù)進行處理字币。

????from提交時则披,是根據(jù)你的表單結(jié)構(gòu)自動完成,不需要代碼干預洗出。

78士复、call、apply翩活、bind方法的區(qū)別與內(nèi)部實現(xiàn)


call方法阱洪,表示傳入的對象參數(shù)調(diào)用call前面對象的方法,并且被調(diào)用的函數(shù)會被執(zhí)行菠镇,call方法的參數(shù)是當前上下文的對象以及參數(shù)列表

apply也是如此冗荸,只不過它傳入的參數(shù)是對象參數(shù)數(shù)組

而bind,用法與apply, call一樣,但是它被對象綁定的函數(shù)不會被執(zhí)行利耍,而是返回這個函數(shù)蚌本,需要你手動去調(diào)用返回的函數(shù)盔粹,才會返回結(jié)果。

call是一個一個傳

apply是數(shù)組傳

bind是寫在方法和時間后面來改變this指向

79魂毁、怎么減少http協(xié)議


性能黃金法則(Performance Golden Rule)

????????改善響應時間最簡單途徑是減少組件的數(shù)量玻佩,并由此減少HTTP請求的數(shù)量。

CSS Sprites

????????CSS精靈席楚,通過使用合并圖片咬崔,通過制定css的Backgroud-image和background-position來顯示元素。

合并腳本和樣式表

????????使用外部的JS和CSS文件應用的方式烦秩,因為這要比直接寫在頁面中性能更好

????????但增加了HTTP請求垮斯,不過可以合并,獨立的JS比用多個JS文件的頁面載入塊38%

????????把多個腳本合并成一個腳本只祠,把多個樣式表合并成一個樣式表

80兜蠕、promise


new Promise(?

????????function (resolve, reject) {?

????????????// 一段耗時的異步操作

????????????????resolve('成功') // 數(shù)據(jù)處理完成

????????????// reject('失敗') // 數(shù)據(jù)處理出錯

????????}

????????).then(

????????????????(res) => {console.log(res)}, // 成功

????????????????(err) => {console.log(err)} // 失敗

????)

resolve作用是,將Promise對象的狀態(tài)從“未完成”變?yōu)椤俺晒Α保磸?pending 變?yōu)?resolved)抛寝,在異步操作成功時調(diào)用熊杨,并將異步操作的結(jié)果,作為參數(shù)傳遞出去盗舰;

reject作用是晶府,將Promise對象的狀態(tài)從“未完成”變?yōu)椤笆 保磸?pending 變?yōu)?rejected),在異步操作失敗時調(diào)用钻趋,并將異步操作報出的錯誤川陆,作為參數(shù)傳遞出去。

81蛮位、promise有三個狀態(tài):


1较沪、pending[待定]初始狀態(tài)

2、fulfilled[實現(xiàn)]操作成功

3失仁、rejected[被否決]操作失敗

當promise狀態(tài)發(fā)生改變尸曼,就會觸發(fā)then()里的響應函數(shù)處理后續(xù)步驟;

promise狀態(tài)一經(jīng)改變萄焦,不會再變骡苞。

Promise對象的狀態(tài)改變,只有兩種可能:

從pending變?yōu)閒ulfilled

從pending變?yōu)閞ejected楷扬。

這兩種情況只要發(fā)生,狀態(tài)就凝固了贴见,不會再變了烘苹。

82、ajax和axios


axios是通過promise實現(xiàn)對ajax技術(shù)的一種封裝片部,就像jQuery實現(xiàn)ajax封裝一樣镣衡。

簡單來說: ajax技術(shù)實現(xiàn)了網(wǎng)頁的局部數(shù)據(jù)刷新霜定,axios實現(xiàn)了對ajax的封裝。

axios是ajax ajax不止axios廊鸥。

  • 序言:七十年代末望浩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惰说,更是在濱河造成了極大的恐慌磨德,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吆视,死亡現(xiàn)場離奇詭異典挑,居然都是意外死亡,警方通過查閱死者的電腦和手機啦吧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門您觉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人授滓,你說我怎么就攤上這事琳水。” “怎么了般堆?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵在孝,是天一觀的道長。 經(jīng)常有香客問我郁妈,道長浑玛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任噩咪,我火速辦了婚禮顾彰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胃碾。我一直安慰自己涨享,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布仆百。 她就那樣靜靜地躺著厕隧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俄周。 梳的紋絲不亂的頭發(fā)上吁讨,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音峦朗,去河邊找鬼建丧。 笑死,一個胖子當著我的面吹牛波势,可吹牛的內(nèi)容都是我干的翎朱。 我是一名探鬼主播橄维,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拴曲!你這毒婦竟也來了争舞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤澈灼,失蹤者是張志新(化名)和其女友劉穎竞川,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蕉汪,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡流译,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了者疤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片福澡。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖驹马,靈堂內(nèi)的尸體忽然破棺而出革砸,到底是詐尸還是另有隱情,我是刑警寧澤糯累,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布算利,位于F島的核電站,受9級特大地震影響泳姐,放射性物質(zhì)發(fā)生泄漏效拭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一胖秒、第九天 我趴在偏房一處隱蔽的房頂上張望缎患。 院中可真熱鬧,春花似錦阎肝、人聲如沸挤渔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽判导。三九已至,卻和暖如春沛硅,著一層夾襖步出監(jiān)牢的瞬間眼刃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工摇肌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸟整,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓朦蕴,卻偏偏與公主長得像篮条,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吩抓,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

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