?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廊鸥。