1、jQuery 1.$(document).ready()是個什麼函數?爲何要用它? 當DOM徹底加載,jQuery容許你執行代碼,使用$(document).ready()的最大好處在於它使用於全部 瀏覽器,jQuery解決了跨瀏覽器的難題 2.JavaScript window.onload 事件和 jQuery ready 函數有何不一樣? (1)前者須要等待dom被建立,還要等待包括大型圖片、音頻、視頻在內的全部外部資源都徹底加載,若是 加載圖片和媒體內容花費了大量時間,用戶就會感覺到定義在window.onload事件上的代碼執行時有明顯 延遲。 (2)後者只須要對dom樹等待,而無需對圖像或外部資源加載等待,從而執行起來更快; 另外一個優點是能夠在網頁中屢次使用,瀏覽器會按他們在html頁面裏出現的順序執行它們 3.jQuery裏的each()是什麼函數?你是如何使用它的? each()函數容許遍歷一個元素集合,能夠傳一個函數給each()方法,被調用的jQuery對象會在其每一 個元素上執行傳入的函數。 找出全部的選中項,而後咱們在alert框中用each()方法來一個個打印它們 $('[name=NameOfSelectedTag]:selected').each(function(selected){ alert($(selected).text()); }); 4.$(this) 和 this 關鍵字在 jQuery 中有何不一樣? $(this)返回一個jQuery對象,你能夠對它調用多個jQuery方法,好比用text()獲取文本,用val()獲取值等 this表明當前元素,它是js關鍵詞中的一個,表示上下文中的當前DOM元素 5.jQuery.get() 和 jQuery.ajax() 方法之間的區別是什麼? get()方法是一個只獲取一些數據的專門化方法 ajax()方法更強大,更具可配置性,讓你能夠指定等待多久,以及如何處理錯誤 6.Jquery 與 jQuery UI 有啥區別? *jQuery 是一個 js 庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。 *jQuery UI 則是在 jQuery 的基礎上,利用 jQuery 的擴展性,設計的插件。 提供了一些經常使用的界面元素,諸如對話框、拖動行爲、改變大小行爲等等 7.jQuery 和 Zepto 的區別?各自的使用場景? (1)jQuery 主要用於 pc 端,固然有對應的 jQuerymobile 用於移動端 (2)zepto 比 jQuery 更 加小巧,主要用於移動端 (3)jquer mobile 相對於 zepto 功能強大,可是體積也很龐大,zepto 很是的輕量2、ES6知識點 1.箭頭函數使用須要注意的地方 當要求動態上下文的時候,就不能使用箭頭函數,也就是this的固定化 (1)在使用=>定義函數的時候,this的指向是定義時所在的對象,而不是使用時所在的對象 (2)不可以用做構造函數,也就是說不能使用new命令 (3)不可以使用arguments對象 (4)不能使用yield命令 如何理解塊級做用域 (1)在一個函數內部function(){} (2)在一個代碼塊內部 特色: (1)不須要function關鍵字來建立函數 (2)省略return關鍵字 (3)繼承當前上下文的 this 關鍵字 2.let和const let是更完美的var,不是全局變量,具備塊級函數做用域,大多數狀況不會發生變量提示 const定義常量值,不可以從新賦值,若是值是一個對象,能夠改變對象裏邊的屬性值 let:不存在變量提高、暫時性死區、不容許重複聲明、塊級做用域 3.結構賦值 (1)左右兩邊結構必須同樣; (2)右邊必須是個合法的值; (3)聲明和賦值不能分開(必須在一句話裏完成); 4.擴展運算符 對象中的擴展運算符(...)用於取出參數對象中的全部可遍歷屬性,拷貝到當前對象之中 5.promise對象 含義:promise是異步編程的一種解決方案,比傳統的解決方案--回調函數和事件更強大更合理。 promise對象兩個特色: (1)對象的狀態不受外界影響。三種狀態:pending(進行中)、fulfilled(已成功)和rejected(已失敗) (2)一旦狀態改變,就不會再變,任什麼時候候均可以獲得這個結果 優勢: (1)將異步操做以同步操做的流程表達出來,避免了層層嵌套的回調函數 (2)Promise對象提供統一的接口,使得控制異步操做更加容易。 缺點: (1)沒法取消Promise,一旦新建它就會當即執行,沒法中途取消 (2)若是不設置回調函數,Promise內部拋出的錯誤,不會反應到外部 (3)當處於pending狀態時,沒法得知目前進展到哪個階段(剛剛開始仍是即將完成) 基本用法: Promise構造函數接受一個函數做爲參數,該函數的兩個參數分別是resolve和reject。 const promise = new Promise(function(resolve, reject) { // ... some code if (/* 異步操做成功 */){ resolve(value); } else { reject(error); } }); Promise實例生成之後,能夠用then方法分別指定resolved狀態和rejected狀態的回調函數 promise.then(function (value) { // success }, function (value) { // failure }) Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的別名,用於指定發生錯誤時的回調函數。 ***.jquery的ajax返回的是deferred對象,經過promise的resolve()方法將其轉換爲promise對象。 6.set數據結構 es6方法,Set自己是一個構造函數,它相似於數組,可是成員值都是惟一的。 const set = new Set([1,2,3,4,4]) console.log([...set] )// [1,2,3,4] console.log(Array.from(new Set([2,3,3,5,6]))); //[2,3,5,6] 7.map, filter, reduce 各自有什麼做用? (1)map 做用是生成一個新數組,遍歷原數組,將每一個元素拿出來作一些變換而後放入到新的數組中。 (2)filter 的做用也是生成一個新數組,在遍歷數組的時候將返回值爲 true 的元素放入新數組,咱們能夠利用這個函數刪除一些不須要的元素 (3)reduce 能夠將數組中的元素經過回調函數最終轉換爲一個值。3、【簡單理解】gulp和webpack的區別 安裝 gulp 命令行工具:npm install --global gulp-cli gulp:能夠進行js,html,css,img的壓縮打包,是自動化構建工具,能夠將多個js文件或是css壓縮成一個文件,而且能夠壓縮爲一行,以此來減小文件體積, 加快請求速度和減小請求次數;而且gulp有task定義處理事務,從而構建總體流程,它是基於流的自動化構建工具。 Webpack:是前端構建工具,實現了模塊化開發和文件處理。他的思想就是「萬物皆爲模塊」,它可以將各個模塊進行按需加載,不會致使加載了無用或冗餘的代碼。4、vue和react的各自優點和類似點 1.Vue的優點是: 模板和渲染函數的彈性選擇 簡單的語法和項目配置 更快的渲染速度和更小的體積 更加適合小型項目 2.React的優點是: 更適合大型應用和更好的可測試性 Web端和移動端原生APP通吃 更大的生態系統,更多的支持和好用的工具 比較適合中大型項目 3.React和Vue類似之處: 用虛擬DOM實現快速渲染 輕量級 響應式組件 服務端渲染 集成路由工具,打包工具,狀態管理工具的難度低 優秀的支持和社區 4.不一樣點: (1).React嚴格上只針對MVC的view層,Vue則是MVVM模式 (2).virtual DOM不同,vue會跟蹤每個組件的依賴關係,不須要從新渲染整個組件樹. 而對於React而言,每當應用的狀態被改變時,所有組件都會從新渲染,因此react中會須要shouldComponentUpdate這個生命週期函數方法來進行控制 (3).組件寫法不同, React推薦的作法是 JSX + inline style, 也就是把HTML和CSS全都寫進JavaScript了,即'all in js'; Vue推薦的作法是webpack+vue-loader的單文件組件格式,即html,css,jd寫在同一個文件; (4).數據綁定: vue實現了數據的雙向綁定,react數據流動是單向的 (5).state對象在react應用中不可變的,須要使用setState方法更新狀態; 在vue中,state對象不是必須的,數據由data屬性在vue對象中管理;