2021年前端面試題匯總vue、js、es6

Vue中computed和watch、method的區(qū)別
computed:計(jì)算屬性只有在相關(guān)的數(shù)據(jù)發(fā)生變化時(shí)才會(huì)改變要計(jì)算的屬性,當(dāng)相關(guān)數(shù)據(jù)沒有變化是,它會(huì)讀取緩存。
一個(gè)數(shù)據(jù)受多個(gè)數(shù)據(jù)影響
a.支持緩存,只有依賴數(shù)據(jù)發(fā)生改變,才會(huì)重新進(jìn)行計(jì)算
b.不支持異步,當(dāng)computed內(nèi)有異步操作時(shí)無效,無法監(jiān)聽數(shù)據(jù)的變化
watch:當(dāng)需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開銷較大的操作時(shí),一個(gè)數(shù)據(jù)影響多個(gè)數(shù)據(jù)
a. 不支持緩存,數(shù)據(jù)變,直接會(huì)觸發(fā)相應(yīng)的操作;
b.watch支持異步;
methods:每次都會(huì)重新計(jì)算,computed只有依賴的數(shù)據(jù)變化時(shí),才重新計(jì)算
vue是否可以監(jiān)聽數(shù)組與對(duì)象的變化
Vue是可以監(jiān)聽數(shù)組改變的,只是受JavaScript的限制,以下兩種情況除外:
a.當(dāng)你利用索引直接設(shè)置一個(gè)數(shù)組項(xiàng)時(shí),例如:vm.items[indexofItem]=newValue
b.當(dāng)你修改數(shù)組的長度時(shí),例如:vm.items.length=newLength
vue 無法監(jiān)聽數(shù)組變化的解決方案:

      1).this.set(arr, index, newVal);
      2).使用數(shù)組 splice 方法可以監(jiān)聽,例子上面有
      3).使用臨時(shí)變量直接賦值的方式
vue 可以監(jiān)聽直接賦值的對(duì)象this.watchObj = {name: 'popo'};
vue 不能監(jiān)聽對(duì)象屬性的添加、修改、刪除

vue 監(jiān)聽對(duì)象的解決方法使用 this.$set(object, key, value)
v-show與v-if的區(qū)別
v-show 本質(zhì)就是通過設(shè)置 css 中的 display 設(shè)置為 none,控制隱藏
v-if 是動(dòng)態(tài)的向 DOM 樹內(nèi)添加或者刪除 DOM 元素
v-show 只編譯一次,后面其實(shí)就是控制 css,而 v-if 不停的銷毀和創(chuàng)建,
如果要頻繁切換某節(jié)點(diǎn)時(shí),使用 v-show
this.$nextTick()
this.$nextTick()將回調(diào)延遲到下次 DOM 更新循環(huán)之后執(zhí)行。在修改數(shù)據(jù)之后立即使用它,然后等待 DOM 更新
keep-alive
原理:就是將需要緩存的VNode節(jié)點(diǎn)保存在this.cache中/在render時(shí),如果VNode的name符合在緩存條件
(可以用include以及exclude控制),則會(huì)從this.cache中取出之前緩存的VNode實(shí)例進(jìn)行渲染。
Vue 的響應(yīng)式原理:
Vue是采用數(shù)據(jù)劫持配合發(fā)布者-訂閱者模式,通過Object.defineProperty來()
來劫持各個(gè)屬性的getter和setter在數(shù)據(jù)發(fā)生變化的時(shí)候,發(fā)布消息給依賴收集器,
去通知觀察者,做出對(duì)應(yīng)的回調(diào)函數(shù)去更新視圖。
本地實(shí)現(xiàn)vue的雙向綁定
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>測試</title>
</head>
<body>
    <!-- 本地實(shí)現(xiàn)雙向綁定 -->
    <input type="text" id="input">
    <div id="show"></div>
    
</body>
<script>
    // 本地實(shí)現(xiàn)雙向綁定
    var obj={}
    function defineProperty(obj,attr){
        var val;
        Object.defineProperty(obj,attr,{
            get:function(){
                return val
            },
            set:function(newVal){
                if(newVal === val){
                    return 
                }
                val = newVal
                document.getElementById('input').value = newVal
                document.getElementById('show').innerText = newVal
            }
        })
    }
    document.getElementById("input").addEventListener('keyup',function(e){
        obj.txt = e.target.value
    })
    defineProperty(obj,'txt')
</script>
</html>
vuex的原理
vuex是利用vue的mixin混入機(jī)制,在beforeCreate鉤子前混入vuexInit方法
vuexInit方法實(shí)現(xiàn)了store注入vue組件實(shí)例,并注冊(cè)了vuex store的引用屬性$store
Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),
并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。
Vue中key的作用

key的特殊attribute主要用在Vue的虛擬DOM算法,在新舊Nodes對(duì)比時(shí)辨識(shí)VNodes。

vue的生命周期
(開始創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛載Dom、渲染、更新、渲染、卸載)主要分為八個(gè)階段:
1.beforeCreate data 和 $el 都沒有初始化 全部為 undefined
2.created data 初始化完成,但 $el 沒有初始化
3.beforeMount data 和 $el 均已存在,但 DOM 為虛擬DOM 仍未完全加載 eg:{{message}}
4.mounted data 和 $el 均已存在,并且 DOM 加載完成 ,完成掛載
當(dāng)data中數(shù)據(jù)發(fā)生改變時(shí)觸發(fā)update相關(guān)函數(shù)
5.beforeUpdate 渲染完成,并監(jiān)測到data發(fā)生變化,在變化的數(shù)據(jù)重新渲染視圖之前會(huì)觸發(fā),
這也是重新渲染之前最后修改數(shù)據(jù)的機(jī)會(huì)
6.updated 監(jiān)測到data發(fā)生變化,并完成渲染更新視圖之后觸發(fā)
6.beforeDestory 實(shí)例銷毀之前調(diào)用 , 實(shí)例仍然完全可用。
7.destroyed 實(shí)例銷毀后調(diào)用。
調(diào)用后,實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽器會(huì)被移除,所有的子實(shí)例也會(huì)被銷毀。
vue的組件通信有哪些,具體用哪些方法?什么時(shí)候用vuex
父子props
兄弟 $emit
子父 $emit事件
祖父/子/孫子 provide/inject
vuex
Vuex與localStorage
vuex 是 vue 的狀態(tài)管理器,存儲(chǔ)的數(shù)據(jù)是響應(yīng)式的。但是并不會(huì)保存起來,刷新之后就回到了初始狀態(tài),
具體做法應(yīng)該在vuex里數(shù)據(jù)改變的時(shí)候把數(shù)據(jù)拷貝一份保存到localStorage里面,
刷新之后,如果localStorage里有保存的數(shù)據(jù),取出來再替換store里的state
hash與history的區(qū)別,在使用中遇到了哪些問題
即地址欄 URL 中的 # 符號(hào)hash 雖然出現(xiàn)在 URL 中,但不會(huì)被包括在 HTTP 請(qǐng)求中,對(duì)后端完全沒有影響,
因此改變 hash 不會(huì)重新加載頁面。
hash模式背后的原理是onhashchange事件,可以在window對(duì)象上監(jiān)聽這個(gè)事件,
因?yàn)閔ash發(fā)生變化的url都會(huì)被瀏覽器記錄下來,從而你會(huì)發(fā)現(xiàn)瀏覽器的前進(jìn)后退都可以用了
history利用H5的 history中新增的兩個(gè)API pushState() 和 replaceState() 和一個(gè)
事件onpopstate監(jiān)聽URL變化
相對(duì)定位與絕對(duì)定位;相對(duì)定位?flex布局垂直居中?絕對(duì)定位與用translate定位有什么區(qū)別
1.position 的四個(gè)值:static、relative、absolute、fixed。
絕對(duì)定位:absolute 和 fixed 統(tǒng)稱為絕對(duì)定位
相對(duì)定位:relative
默認(rèn)值:static
relative:相對(duì)于原來位置移動(dòng),元素設(shè)置此屬性之后仍然處在文檔流中,不影響
其他元素的布局
absolute:元素會(huì)脫離文檔流,如果設(shè)置偏移量,會(huì)影響其他元素的位置定位
absolute定位原理剖析:
(1.在父元素沒有設(shè)置相對(duì)定位或絕對(duì)定位的情況下,元素相對(duì)于根元素定位(即html元素)(是父元素沒有)。
(2.父元素設(shè)置了相對(duì)定位或絕對(duì)定位,元素會(huì)相對(duì)于離自己最近的設(shè)置了相對(duì)或
絕對(duì)定位的父元素進(jìn)行定位(或者說離自己最近的不是static的父元素進(jìn)行定位,因?yàn)樵啬J(rèn)是static)
flex布局垂直居中:
  display: flex;
  justify-content: center; /* 水平居中 */
  align-items: center;     /* 垂直居中 */
事件委托:
事件委托利用了事件冒泡,只指定一個(gè)事件處理程序,就可以管理某一類型的所有事件
transition、transform、animate的區(qū)別?
transition需要事件觸發(fā),比如:hover、:focus、:checked或者js
操作css樣式的變更,所以沒法在網(wǎng)頁加載時(shí)自動(dòng)發(fā)生。
transition是一次性的,不能重復(fù)發(fā)生,除非一再觸發(fā)。
transition只能定義開始狀態(tài)和結(jié)束狀態(tài),不能定義中間狀態(tài),也就是說只有兩個(gè)狀態(tài)。
animation不需要觸發(fā)
可以定義初始中間結(jié)束狀態(tài)
可重復(fù)發(fā)生
transform: 應(yīng)用于元素的2D或3D轉(zhuǎn)換。這個(gè)屬性允許你將元素旋轉(zhuǎn),縮放,移動(dòng),傾斜等。
旋轉(zhuǎn):rotate()、縮放:scale()、移動(dòng):translate()、傾斜:skew()
在瀏覽器輸入url后發(fā)生了什么
1.DNS域名解析;
2.建立TCP連接;
3.發(fā)送HTTP請(qǐng)求;
4.服務(wù)器處理請(qǐng)求;
5.返回響應(yīng)結(jié)果;
6.關(guān)閉TCP連接;
7.瀏覽器解析HTML;
8.瀏覽器布局渲染;
get、post的區(qū)別
1.get傳參方式是通過地址欄URL傳遞,是可以直接看到get傳遞的參數(shù),post傳參方式參數(shù)URL不可見,
get把請(qǐng)求的數(shù)據(jù)在URL后通過?連接,通過&進(jìn)行參數(shù)分割。post將參數(shù)存放在HTTP的包體內(nèi)
2.get傳遞數(shù)據(jù)是通過URL進(jìn)行傳遞,對(duì)傳遞的數(shù)據(jù)長度是受到URL大小的限制,
URL最大長度是2048個(gè)字符。post沒有長度限制
3.get后退不會(huì)有影響,post后退會(huì)重新進(jìn)行提交
4.get請(qǐng)求可以被緩存,post不可以被緩存
談?wù)勀銓?duì) TCP 三次握手和四次揮手的理解
http狀態(tài)碼
200請(qǐng)求成功
301永久重定向
302臨時(shí)重定向
401需要用戶身份驗(yàn)證
404資源未找到
500服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求
502作為網(wǎng)關(guān)或代理服務(wù)器請(qǐng)求時(shí),從遠(yuǎn)程服務(wù)器獲取到一個(gè)無效響應(yīng)
504充當(dāng)網(wǎng)關(guān)或帶理服務(wù)器,未及時(shí)從遠(yuǎn)端服務(wù)器獲取請(qǐng)求
說一下CORS?CORS與JSONP的比較
跨域資源共享它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。
JSONP只支持GET請(qǐng)求,CORS支持所有類型的HTTP請(qǐng)求。JSONP的優(yōu)勢在于支持老式瀏覽器,以及可以向不支持CORS
的網(wǎng)站請(qǐng)求數(shù)據(jù)。
JSONP 由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)?;卣{(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面
中調(diào)用的函數(shù)?;卣{(diào)函數(shù)的名字一般是在請(qǐng)求中指定的。而數(shù)據(jù)就是傳入回調(diào)函
數(shù)中的JSON數(shù)據(jù)
說一下宏任務(wù)和微任務(wù)?
image.png

image.png
說一下繼承的幾種方式及優(yōu)缺點(diǎn)?
1)原型鏈繼承:
問題:引用類型的屬性被所有實(shí)例共享,一個(gè)被修改了,就都修改了
2)借用構(gòu)造函數(shù)繼承call或apply
問題:但是只能繼承父類的實(shí)例屬性和方法,不能繼承原型屬性或者方法
優(yōu)點(diǎn):解決了數(shù)據(jù)共享問題
3)組合繼承
問題:子類原型上多了一份父類的實(shí)例屬性
優(yōu)點(diǎn):解決了 原型繼承和構(gòu)造函數(shù)繼承的缺點(diǎn)
其背后的思路是使用原型鏈實(shí)現(xiàn)對(duì)原型屬性和方法的繼承,而通過借用構(gòu)造函數(shù)來實(shí)現(xiàn)對(duì)實(shí)例屬性的繼承。
深拷貝和淺拷貝
深拷貝和淺拷貝最根本的區(qū)別在于是否真正獲取一個(gè)對(duì)象的復(fù)制實(shí)體,而不是引用。
假設(shè)B復(fù)制了A,修改A的時(shí)候,看B是否發(fā)生變化:
如果B跟著也變了,說明是淺拷貝,拿人手短?。ㄐ薷亩褍?nèi)存中的同一個(gè)值)
如果B沒有改變,說明是深拷貝,自食其力?。ㄐ薷亩褍?nèi)存中的不同的值)
淺拷貝(shallowCopy)只是增加了一個(gè)指針指向已存在的內(nèi)存地址,
深拷貝(deepCopy)是增加了一個(gè)指針并且申請(qǐng)了一個(gè)新的內(nèi)存,使這個(gè)增加的指針指向這個(gè)新的內(nèi)存
數(shù)組去重 的方法
1)利用ES6 Set去重(ES6中最常用)
2)利用for嵌套for,然后splice去重(ES5中最常用)
3)利用indexOf去重
4)利用sort()然后判斷相鄰元素
5)利用hasOwnProperty
6)利用filter
7)利用Map數(shù)據(jù)結(jié)構(gòu)去重
js中判斷是否是對(duì)象typeof、instanceof和constructor的區(qū)別

(1)typeof運(yùn)算符,通常會(huì)返回:"undefined"、"object"、"boolean"、"number" 、"function" 和 "string"的字符串。數(shù)組和對(duì)象都返回"object"。


image.png

(2)instanceof運(yùn)算符用來判斷一個(gè)對(duì)象是否為一個(gè)類的實(shí)例;判斷一個(gè)構(gòu)造函數(shù)的prototype屬性所指向的對(duì)象是否存在另外一個(gè)要檢測對(duì)象的原型鏈上??梢詤^(qū)分?jǐn)?shù)組和對(duì)象。


image.png

(3)constructor返回變量的構(gòu)造函數(shù);返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用。可以區(qū)分?jǐn)?shù)組和對(duì)象。
image.png
JS中的for循環(huán)
for
forEach
filter
map
some
every
原型與原型鏈prototype與proto
原型:
①所有引用類型都有一個(gè)__proto__(隱式原型)屬性,屬性值是一個(gè)普通的對(duì)象
②所有函數(shù)都有一個(gè)prototype(原型)屬性,屬性值是一個(gè)普通的對(duì)象
③所有引用類型的__proto__屬性指向它構(gòu)造函數(shù)的prototype
原型鏈:
當(dāng)訪問一個(gè)對(duì)象的某個(gè)屬性時(shí),會(huì)先在這個(gè)對(duì)象本身屬性上查找,如果沒有找到,則會(huì)去它的__proto__
隱式原型上查找,即它的構(gòu)造函數(shù)的prototype,
如果還沒有找到就會(huì)再在構(gòu)造函數(shù)的prototype的__proto__中查找,這樣一層一層向上查找就會(huì)形成一個(gè)
鏈?zhǔn)浇Y(jié)構(gòu),我們稱為原型鏈。
改變this指向的方法bind,call,apply
function.bind(o,args….)bind返回一個(gè)作為方法調(diào)用的函數(shù),一個(gè)新函數(shù),
該函數(shù)會(huì)作為o的方法來調(diào)用,并向他傳入args參數(shù)
apply傳的參數(shù),第一個(gè)是要將this指向誰,第二個(gè)是數(shù)組參數(shù)
call傳的參數(shù)是多個(gè),第一個(gè)是要將this指向誰,其他是參數(shù)
call和apply返回的是調(diào)用函數(shù)function的返回值
閉包,閉包的作用域
閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。
它的最大用處有兩個(gè),一個(gè)是前面提到的可以讀取函數(shù)內(nèi)部的變量,
另一個(gè)就是讓這些變量的值始終保持在內(nèi)存中,不會(huì)在f1調(diào)用后被自動(dòng)清除。
遞歸:什么是遞歸?項(xiàng)目中什么位置用到了遞歸
['']==''返回什么?為什么?運(yùn)算符==進(jìn)行了什么操作?
1.[''].valueof轉(zhuǎn)為原始值''
2.''轉(zhuǎn)為數(shù)字0
3.0==''再將''轉(zhuǎn)為數(shù)字0,再比較
請(qǐng)求多個(gè)接口時(shí),要保證同時(shí)拿到數(shù)據(jù),渲染到同一個(gè)頁面上的方法。一個(gè)頁面渲染需要3個(gè)接口返回的數(shù)據(jù),怎么判斷這3個(gè)接口都返回成功

Promise.all可以將多個(gè)Promise實(shí)例包裝成一個(gè)新的Promise實(shí)例。同時(shí),成功和失敗的返回值是不同的,成功的時(shí)候返回的是一個(gè)結(jié)果數(shù)組,而失敗的時(shí)候則返回最先被reject失敗狀態(tài)的值。

Promise.all([methods1, methods2]).then(res => {
        //在方法1 和方法2 都請(qǐng)求成功時(shí)再進(jìn)行操作。
})
es6的新特性
1.let/const的變量聲明
2.模板字符串
3.箭頭函數(shù)
4.參數(shù)的默認(rèn)值賦值
5.對(duì)象與數(shù)組的解構(gòu)賦值
6.for of遍歷迭代器如數(shù)組,for/in遍歷對(duì)象
es6遍歷對(duì)象的方法
for … in
Object.keys()
Object.getOwnPropertyNames(obj),
Reflect.ownKeys(obj)
let var const 聲明變量的區(qū)別
① var聲明的變量屬于函數(shù)作用域;let 和 const 聲明的變量屬于塊級(jí)作用域,不能跨函數(shù)訪問;
② var存在變量提升現(xiàn)象,而 let 和 const 沒有;
③ var變量可以重復(fù)聲明,值可改變;在同一個(gè)塊級(jí)作用域下:let變量不能重新聲明;
const定義的變量是常量,聲明時(shí)必須賦值,但不允許重復(fù)賦值,如果定義的是引用類型,可以修改數(shù)據(jù)內(nèi)部結(jié)構(gòu)。
柯里化函數(shù):一道經(jīng)典面試題
// 實(shí)現(xiàn)一個(gè)add方法,使計(jì)算結(jié)果能夠滿足如下預(yù)期:
add(1)(2)(3) = 6;
add(1, 2, 3)(4) = 10;
add(1)(2)(3)(4)(5) = 15;

function add() {
    // 第一次執(zhí)行時(shí),定義一個(gè)數(shù)組專門用來存儲(chǔ)所有的參數(shù)
    var _args = Array.prototype.slice.call(arguments);

    // 在內(nèi)部聲明一個(gè)函數(shù),利用閉包的特性保存_args并收集所有的參數(shù)值
    var _adder = function() {
        _args.push(...arguments);
        return _adder;
    };

    // 利用toString隱式轉(zhuǎn)換的特性,當(dāng)最后執(zhí)行時(shí)隱式轉(zhuǎn)換,并計(jì)算最終的值返回
    _adder.toString = function () {
        return _args.reduce(function (a, b) {
            return a + b;
        });
    }
    return _adder;
}

add(1)(2)(3)                // 6
add(1, 2, 3)(4)             // 10
add(1)(2)(3)(4)(5)          // 15
add(2, 6)(1)                // 9

普通函數(shù)與箭頭函數(shù)的區(qū)別
① 外形不同:箭頭函數(shù)使用箭頭定義,普通函數(shù)中沒有
②箭頭函數(shù)都是匿名函數(shù)普通函數(shù)可以有匿名函數(shù),也可以有具體名函數(shù),但是箭頭函數(shù)都是匿名函數(shù)
③箭頭函數(shù)不能用于構(gòu)造函數(shù),不能使用new
③箭頭函數(shù)中this的指向不同
在普通函數(shù)中,this總是指向調(diào)用它的對(duì)象,如果用作構(gòu)造函數(shù),this指向創(chuàng)建的對(duì)象實(shí)例。
延長作用域鏈

? try-catch 語句的 catch 塊;
? with 語句

前端性能優(yōu)化
1.減少請(qǐng)求數(shù)量:
合并:公共庫合并
圖片處理:雪碧圖,base64,字體圖標(biāo)如阿里圖標(biāo)庫
減少重定向
使用緩存
不使用CSS @import
避免使用空的src和href
2.減少資源大小
    【1.壓縮】:
      html壓縮:不顯示 空格,制表符,換行符
      css壓縮:刪除無效代碼,語義合并
      JS壓縮與混亂包括無效字符及注釋的刪除、代碼語義的縮減和優(yōu)化、降低代            
      碼可讀性,實(shí)現(xiàn)代碼保護(hù)
      圖片壓縮
  【2.使用webp】:在安卓下可以使用webp格式的圖片,它具有更優(yōu)的圖像數(shù)據(jù) 
     壓縮算法,能帶來更小的圖片體積
  【3.開啟Gzip:】HTTP協(xié)議上的GZIP編碼是一種用來改進(jìn)WEB應(yīng)用程序性能的技術(shù)
3.優(yōu)化網(wǎng)絡(luò)連接:dns預(yù)解析
<link rel="dns-prefecth" >
4.優(yōu)化資源加載:
        【加載位置】,css在head,js在body最后,
        【資源加載時(shí)機(jī)】:
       1、異步script標(biāo)簽:defer、async
          2、模塊按需加載:需要根據(jù)路由來加載當(dāng)前頁面需要的業(yè)務(wù)模塊
          3、使用資源預(yù)加載preload和資源預(yù)讀取prefetch
          4、資源懶加載與資源預(yù)加載
5.減少重繪回流:
      【樣式設(shè)置】:
       1、避免使用層級(jí)較深的選擇器
          2、避免使用CSS表達(dá)式
          3、不要使用table布局
          4、能夠使用CSS實(shí)現(xiàn)的效果,盡量使用CSS而不使用JS實(shí)現(xiàn)
      【DOM優(yōu)化】:
          1、緩存DOM
          2、減少DOM深度及DOM數(shù)量
          3、事件代理
          4、防抖和節(jié)流
          5、及時(shí)清理環(huán)境:垃圾收集(標(biāo)記清除,引用計(jì)數(shù))
6.webpack優(yōu)化
【打包公共代碼】
【動(dòng)態(tài)導(dǎo)入和按需加載】
【剔除無用代碼】
【長緩存優(yōu)化】
【公用代碼內(nèi)聯(lián)】:使用html-webpack-inline-chunk-plugin插件將mainfest.js內(nèi)聯(lián)到html文件中
promise的三種狀態(tài)
pending/reslove/reject 。pending就是未完成,resolve可以理解為成功,reject可以理解為拒絕
函數(shù)與變量的提升
變量提升:在函數(shù)域里定義一個(gè)和外部變量一樣名稱的變量時(shí),變量的聲明會(huì)提升至第一句,賦值則不會(huì)變。
函數(shù)提升:在寫JS代碼的時(shí)候,有兩種寫法,一種是函數(shù)表達(dá)式,
另外一種是函數(shù)聲明方式。我們需要重點(diǎn)注意的是,只有函數(shù)聲明形式才能被提升。
防抖節(jié)流
作用域與作用域鏈
異步控制(promise,es6 generate,Async)
模塊化開發(fā)模式(AMD,CMD,KMD)
javascript解釋器(異步I/O實(shí)現(xiàn),垃圾回收,事件隊(duì)列)
自身的優(yōu)點(diǎn)
以后的打算
離職的原因
技術(shù)面試問到你還有什么要問的嗎

未來一年,部門的工作任務(wù)是什么
入職后的3個(gè)月,會(huì)參加哪些培訓(xùn),
團(tuán)隊(duì)有多少人,工作年限是多少
可以大概講一下公司的企業(yè)文化嗎

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. v-if與v-show區(qū)別 v-if只有當(dāng)條件是true才進(jìn)行渲染,是真正的銷毀和重建。v-show無論條件...
    麥西的西閱讀 1,267評(píng)論 0 18
  • client,page和screen的區(qū)別? clientX,clientY是觸摸點(diǎn)相對(duì)于viewport視口x,...
    change_22fa閱讀 1,844評(píng)論 1 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,834評(píng)論 28 54
  • 信任包括信任自己和信任他人 很多時(shí)候,很多事情,失敗、遺憾、錯(cuò)過,源于不自信,不信任他人 覺得自己做不成,別人做不...
    吳氵晃閱讀 6,364評(píng)論 4 8
  • 步驟:發(fā)微博01-導(dǎo)航欄內(nèi)容 -> 發(fā)微博02-自定義TextView -> 發(fā)微博03-完善TextView和...
    dibadalu閱讀 3,412評(píng)論 1 3

友情鏈接更多精彩內(nèi)容