+function() {
alert(a)
a()
var a = function() {
console.log(1)
}
function a() {
console.log(2)
}
alert(a)
a()
var c = d = a
}();
alert(d)
alert(c)
複製代碼
結果
function() {console.log(2)}
2
function() {console.log(1)}
1
function() {console.log(1)}
報錯
緣由:
前四個答案: 變量提示所致使
第五個答案: 由於變量在函數中沒有用 var 來聲明,因此是一個全局變量
第六個答案: 函數做用域,在函數內部定義的變量外面訪問不到
複製代碼
for (var i = 0; i< 10; i++) {
document.body.innerHTML += '<li></li>'
}
複製代碼
結果
複製代碼
所在的問題:頻繁的改變 Dom 形成性能問題
css
解決方法:定義一個變量,存儲須要插入的 Dom ,只執行一次插入操做
html
let html = ''
for (var i = 0; i< 10; i++) {
html += '<li></li>'
}
document.body.innerHTML = html
複製代碼
var obj1 = {name: 'obj1', fn: function() {
console.log(this.name)
}}
var obj2 = {name: 'obj2'}
var obj3 = {name: 'obj3'}
obj1.fn()
var newFn = obj1.fn
newFn()
newFn.call(obj2)
obj3.fn = newFn
obj3.fn()
複製代碼
結果
複製代碼
obj1
undefined
obj2
obj3
複製代碼
簡短來講:cnd 就是一個存放靜態資源的服務器。
es6
好處:1: 節省網絡時間,加快相應速度 2: 下降自身服務器的壓力
面試
詳細解釋見這裏數組
- css, js, 圖片的壓縮
- 可使用雪碧圖,來較少網絡請求
- css 選擇器不要超過 3 層
- 減小對 dom 的操做
- 能夠對提交按鈕作防抖操做
- 對圖片能夠進行懶加載
- 靜態資源使用 cdn 加速
1,左側作浮動,右側有浮動,中間絕對定位 left 設置成左側盒子的寬度,right 設置成右側盒子的寬度瀏覽器
- 三個盒子都用絕對定位實現
- 使用彈性盒子佈局,將父盒子設置成彈性盒子,並將屬性設置成橫向排列,不支持換行,左右寬度固定,中間盒子設置成flex: 1;
面對這種題不要只回答一種方法,儘可能多寫
性能優化
項目中有沒有使用過 CDN ,CND 爲何可以提升性能,是怎麼上傳至 CDN 的。bash
談談對原型鏈的理解,手寫列子實現能用幾種方式實現?服務器
能夠參考 JavaScript高級程序設計 第三版
有沒有了解過 es6 是怎麼實現原型鏈的,經過 babel 轉換成 es5 又是怎麼樣的?
數組的 forEach, map, filter, reduce, some, every 分別表明什麼意思
怎麼理解 es6 中的 Set, Map 數據結構
談談對 Promise 的理解,並回答下列題目及緣由
let p = new Promise((resolve, reject) => {
resolve(1)
})
p.then(res => res + 1)
p.then(res => console.log(res))
// 回答輸出 1
面試官接着問:若是想要結果是 2 該怎麼實現?
// 鏈式調用 (由於.then 裏面返回的數據會自動包裹一個 Promise 對象)
複製代碼
謝謝你們的閱讀,有錯誤之處,敬請指教。