1.什麼是閉包?(js)
閉包是一個可以讀取其他函數內部變量的函數;本質上是將函數內部和函數外部嫁接起來的橋樑。優點是能讀取函數內部的變量,能保證這些變量永遠保存在內存中。缺點:一是使用不當時會導致內存泄露,解決方法是在退出函數之前,將不使用的局部變量全部刪除,二是會改變父級的值。
2.如何解決js的數組去重。(百度上面有很多種,可以看看)(js)
數組遞歸去重
Array.prototype.distinct =
function
(){
var
arr =
this
,
len = arr.length;
arr.sort(
function
(a,b){
//對數組進行排序才能方便比較
return
a - b;
})
function
loop(index){
if
(index >= 1){
if
(arr[index] === arr[index-1]){
arr.splice(index,1);
}
loop(index - 1);
//遞歸loop函數進行去重
}
}
loop(len-1);
return
arr;
};
var
a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var
b = a.distinct();
console.log(b.toString());
//1,2,3,4,5,6,45,56
3.如何優化前端性能?
(1).減少http請求(css雪碧圖)
(2).css放在頂部,js放在底部
(3).合併請求
(4).使用組件防止代碼冗餘
4.ajax請求數據的方法?(js)
(1)原生態方法
1.創建XMLHTTPRequest對象
2.使用open方法設置和服務器的交互信息
3.設置發送的數據,開始和服務器端交互
4.註冊事件
5.更新界面
get請求:
//步驟一:創建異步對象
var ajax = new XMLHttpRequest();
//步驟二:設置請求的url參數,參數一是請求的類型,參數二是請求的url,可以帶參數,動態的傳遞參數starName到服務端
ajax.open('get','getStar.php?starName='+name);
//步驟三:發送請求
ajax.send();
//步驟四:註冊事件 onreadystatechange 狀態改變就會調用
ajax.onreadystatechange = function () {
if (ajax.readyState==4 &&ajax.status==200) {
//步驟五 如果能夠進到這個判斷 說明 數據 完美的回來了,並且請求的頁面是存在的
console.log(xml.responseText);//輸入相應的內容
}
}
post請求:
//創建異步對象
var xhr = new XMLHttpRequest();
//設置請求的類型及url
//post請求一定要添加請求頭纔行不然會報錯
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.open('post', '02.post.php' );
//發送請求
xhr.send('name=fox&age=18');
xhr.onreadystatechange = function () {
// 這步爲判斷服務器是否正確響應
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
};
5.事件代理:(js)
事件委託就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。(通過子級查找父級,通過父級進行代碼的操作)
事件冒泡:鼠標事件一級一級向上傳遞到document
6.es6十大特性:
箭頭函數,定義變量的let,定義常量的const,解構賦值,
7.cookie和session的區別和用法 (js)
cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。
cookie與session的區別是, cookie數據保存在客戶端,session數據保存在服務器端。
session是放在服務器上的,過期與否取決於服務期的設定,cookie是存在客戶端的,過去與否可以在cookie生成的時候設置進去。
(1)、cookie數據存放在客戶的瀏覽器上,
session數據放在服務器上
(2)、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session
(3)、session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE
(4)、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能3K。
localstorage存儲的數據窗口關閉之後會一直存到瀏覽器,除非手動清除,sessionstorage存儲的數據窗口關閉之後就會清掉
8.原型和原型鏈(js)
9.css3有什麼新的屬性
box-shadow,陰影,border-radius,圓角,transform:
rotate旋轉 scale 變形,animation,動畫
10.html5有什麼新的特性
語義化標籤(nav,header,footer)
增強型表單(如color,date,datetime,email)
視頻和音頻(audio,video )
canvas繪圖等
11.vue路由,跳轉頁面,router.push() router.go()
12.vue中8種組件通信方式
1.prop - $emit 父子組件傳值
prop(父組件向子組件傳值)
$emit(子組件向父組件傳值)
2.$children/$parent
3.provide/reject
4.ref
5.eventBus
6.Vuex(狀態管理機制)
7.localStorage
/ sessionStorage
13.vue開發中常用的指令有哪些?
v-model 用於表單輸入,實現表單控件和數據的雙向綁定
v-show
與 v-if
: 條件渲染, 注意二者區別
使用了v-if的時候,如果值爲false,那麼頁面將不會有這個html標籤生成。 v-show則是不管值爲true還是false,html元素都會存在,只是CSS中的display顯示或隱藏
v-bind 當表達式的值改變時,將其產生的連帶影響,響應式地作用於 DOM
v-on:click 可以簡寫爲@click,@綁定一個事件。如果事件觸發了,就可以指定事件的處理函數
v-for
:基於源數據多次渲染元素或模板塊
14.vue的生命週期
創建前beforecreate
創建後created
掛載前beforemounte
掛載後mounted
beforeupdate更新前
updated更新後
beforedestroy銷燬前
destroyed銷燬後
15.關於methods,computed,watch這三者之間博主的看法
methods是用來定義方法的,computed用於計算數據的,watch和methods或者computed一起使用,可以動態監聽methods或者computed的值
打個比方,(實際工作項目中用到了,其實之前也不是很懂的,分享給大家,說的不對可以指出來哦~)
當你需要判斷你的名字和電話號碼是否輸入且輸入正確時,你在watch中定義一個和computed中的方法一樣的名稱,類似於
computed: {
ifNext(){
//這裏輸入你需要的代碼
if(this.username!=''&&this.phone!=''){
console.log("aaa")
}
}
},
watch: {
ifNext(val1,val2){
this.username = val1
this.phone = val2
}
}
這樣你就可以判斷你的名字和電話號碼是否輸入且輸入正確時,再進行操作下一步
待續~