Shopee一面——牛客網@ZhengjieTang
阿新 • • 發佈:2020-07-29
用過哪些ES6的新特性?
說下我自己平時做專案常用的吧,不是很常用的就沒列出來了(其實是我只掌握了常用的。。。)
- es6的模組化解決方案(匯入匯出)
- class
- promise
- let/const
- 箭頭函式、剩餘引數
- 陣列/物件解構賦值
- 模板字串
- 函式預設引數
- Array物件擴充套件方法:擴充套件運算子、find、findIndex、includes
- Set資料結構(集合)
css中的box-sizing
box-sizing:允許你以某種方式定義某些元素,以適應指定區域(說簡單點就是改變其盒子模型)
其有三個值,預設為content-box
- content-box:標準盒模型(width=content+padding+border+maigin)
- border-box:怪異盒模型(windth=conten+padding+border)+ margin
- inherit:css關鍵字,繼承父元素的box-sizing值
css如何讓超出的文字隱藏並顯示省略號
/* 必須要設定塊級盒子寬度 */
width: 100px;
/* 超出文字的部分不顯示 */
overflow: hidden;
/* 強制文字在一行顯示 */
white-space: nowrap;
/* 顯示省略符號來代表被修剪的文字 */
text-overflow: ellipsis;
async,await函式,await後面能否跟一個普通函式?
es2017新增的async,await函式是為了更便意的解決非同步而出現的的解決方案,本質上還是一個“語法糖”,使程式碼結構更清晰,有更好的語義,寫複雜業務的時候閱讀起來更快
await後面是可以跟一個普通函式,根據不同情況有兩種情況:
- 對於promise物件,await會阻塞函式執行,等待promise的resolve返回值,作為await的結果,然後再執行下下一個表示式
- 對於非promise物件,比如箭頭函式,同步表示式等等,await等待函式或者直接量的返回,而不是等待其執行結果
EventLoop
可以從以下四個方面進行解釋:
JS執行緒、巨集任務(同步、非同步)、微任務(promise)、事件迴圈
詳情可以參考我的這篇關於JavaScript Event Loop部落格
強快取和協商快取
(博主對這個不是很瞭解,後續會有部落格更新)
強快取(本地快取)
協商快取(弱快取):由伺服器來確定快取資源是否可用
借用網路上的一張圖來說明整個瀏覽器快取流程:
http的狀態碼有哪些?
這裡說幾個常見的:
- 200 OK
- 204 No Content
- 301 Moved Permanently(永久性重定向)
- 400 Bad Request
- 404 Not Found
- 500 Internal Server Error
forEach和for遍歷陣列的不同
for in
會遍歷陣列內所有可列舉的屬性,包括原型上的屬性和方法,所以for in
用來遍歷物件更合適
let arr = [1, 3, 5, 4]
arr.name = 'Object'
for (let index in arr) {
console.log(index + ':' + arr[index])
}
forEach
會從頭到尾對數組裡的每個元素遍歷一遍 ,他不會生成新陣列,也不改變原陣列,回撥函式接收三個值,分別是 陣列的元素,索引和當前陣列
let arr = [1, 3, 5, 4]
arr.name = 'Object'
arr.forEach((item, index, array) => {
console.log(index + ':' + item, array)
})
Map和WeakMap
Map(字典):ES6 新增的一種新的資料結構,類似於陣列,但成員是唯一且無序的,沒有重複的值。集合是以 [value, value] 的形式儲存元素,字典是以 [key, value] 的形式儲存,可以遍歷。
WeakMap:WeakMap 物件是一組鍵值對的集合,只接受物件作為鍵名(null除外),不接受其他型別的值作為鍵名,其中的鍵是弱引用物件,而值可以是任意,不能遍歷。