面試記錄2
1. Ajax的原理,和程式相關
2. 程式和執行緒的關係
3. css選擇器的優先順序
- 不同級別
!important > 行內樣式>ID選擇器 > 類選擇器 > 標籤 > 萬用字元 > 繼承 > 瀏覽器預設屬性
- 相同級別
後面覆蓋前面的
4. 閉包相關
閉包的作用:
- 在函式外部讀取函式內部區域性變數;
- 在函式外部讀取函式內部區域性變數,變數被封裝到區域性作用域,只提供介面獲取該變數,就像傳統oop的私有變數,公有方法一樣,這樣可以避免汙染全域性變數;
- 讓這些值始終儲存在記憶體中。
使用場景
- 由於setTimeout方法不能傳遞引數,可以用閉包來解決
function func(param) {
return function() {
alert(param);
}
}
var f = func(1)
setTimeout(f, 1000);
- 節流函式
function debounce(func, delay) {
let timer;
//該函式是一個閉包,所以timer會一直存在於記憶體中,並且timer只能在函式內部訪問
return function (...args) {
if (timer) {
clearTimeout(timer);
}
timer = window.setTimeout(() => {
func.apply(this, args);
}, delay);
}
}
5. html5新特性
- Canvas Api
- <audio> <vedio>
- Geolocation Api
- Websocket Api
- Form Api
- Storage Api
- 離線應用
6. 垂直居中
垂直居中
用彈性盒子實現水平垂直居中
<div class="parent">
<div class="children">我是通過flex的水平垂直居中噢!</div>
</div>
html,body{
width: 100%;
height: 200px;
}
.parent {
display:flex;
align-items: center;/*垂直居中*/
justify-content: center;/*水平居中*/
width:100%;
height:100%;
background-color:red;
}
.children {
background-color:blue;
}
7. Promise
兩個作用
- 避免回撥地獄
- 為了我們的程式碼更加具有可讀性和可維護性,我們需要將資料請求與資料處理明確的區分開來
8. alert(1&&2) alert(1||2)
alert(1 && 2) //2 括號裡面先計算,var a = 1 && 2; alert(a)
alert(1 || 2) //1 括號裡面先計算,var a = 1 || 2; alert(a)
9. display: none 和 visibility:hidden
display:none //隱藏元素,不佔據文件流
visibility:hidden //隱藏元素,不佔據文件流
10. 物件先會先找自身的屬性,然後再去找原型上的屬性
function C1(name) {
if (name) this.name = name;
};
C1.prototype.name = `weilei`;
console.log(new C1().name); // weilei
function C2(name) {
this.name = name;
};
C2.prototype.name = `weilei`;
console.log(new C2().name); // undefined
function C3(name) {
this.name = name || `sam`;
};
C3.prototype.name = `weilei`;
console.log(new C3().name); // sam
11. mouseover和mouseenter區別
唯一的區別是 onmouseenter 事件不支援冒泡
12. js改變html的title
document.title = `xxx`