js常用面試題整理


1、array操作關鍵字

pop() 刪除最后一個;push最后添加一個或者多個;reverse顛倒數組;shift刪除第一個元素;unshift首部添加元素;concat銜接兩個數組;join把數組按照指定字符變為字符;slice(1,1)截選數組元素;

2、js閉包的優缺點:

閉包是有權訪問另一個函數私有變量的函數叫閉包;

優點:避免變量污染、加強了封裝性,邏輯性比較強代碼的可讀性高;加載到內存中執行效率高;

缺點:在內存中,造成了內存浪費,如果濫用閉包是災難性的;

3、模塊化的意義:

Es6使用import、export導入和導出,可以封裝代碼,可讀性高,邏輯分明,可以按需導入模塊,避免資源的消耗和浪費;

4、前台優化方案:

初級:去掉代碼中的打印信息和注釋信息;壓縮js和css;使用緩存頁面靜態文件緩存或者CDN;圖片壓縮;

中級:使用負載均衡nginx、docker;靜動態文件分離;查詢結果緩存使用redis;

5、WebPack和Grunt和Gulp對比

Webpack可以看做是模塊打包器,把你的代碼轉換成合適的格式供瀏覽器使用;

常用webpack構建本地服務器,可以讓瀏覽器監聽你代碼的修改,自動刷新現實后的結果;

Gulp/Grunt是一種能夠優化前端開發的流程工具,而WebPack是一種模塊化的解決方案;

WebPack有4個配置選項,打包速度越快,負面作用就越大,會不利於調試,文件的執行效率也有一定的影響;開發階段使用:eval-source-map:使用eval打包源文件模塊,在同一個文件中生成干凈的完整的source map。這個選項可以在不影響構建速度的前提下生成完整的sourcemap,但是對打包后輸出的JS文件的執行具有性能和安全的隱患。在開發階段這是一個非常好的選項,在生產階段則一定不要啟用這個選項;

babel是一個編譯js的平台,把es6/es7轉換成瀏覽器支持的es5提供瀏覽器使用;

6、js數據類型

String,Number,Boolean,Null,Undefined;Object,Array,Function(引用類型)

7、es6新特性

箭頭操作符;對class的支持(constructor構造函數);不定參數...x;let和const關鍵字;for of遍歷;模塊的支持import;promise異步函數的處理模式(pending等待中;resolve返回成功,reject返回失敗);

8、es7(es2016)新特性

可以使用async/await

9、Zepto.js介紹

Zepto是一個針對移動端瀏覽器的輕量級的js庫,和jquery比較類似;

10、redux介紹

Redux最重要的用途是應用狀態管理,訂閱、監聽消息用的,數據改變時通知相應的ui修改的;

11、html5的canvas

canvas.getContext(“2d”)設置描繪類型2d,webgl表示3維;lineWidth線寬、strokeStyle線顏色,moveTo(x,y)移動畫筆、lineTo划線到坐標;stroke執行划線;strokeRect繪制矩形,fillRect填充矩形,clearRect清除指定區域;圓弧使用Math.PI;drawImage繪制圖像;繪制文字:fillText,strokeText描邊文字;

畫板代碼:

canvas1.onmousemove=function(e){

//划線到當前客戶端的x與y座標

       ctx.lineTo(e.clientX, e.clientY);

       //執行畫線

       ctx.stroke();

}

12、WebGL介紹

WebGL是一種3D繪圖標准,運行js和opengl結合在一起,省去了網頁渲染的使用使用插件的麻煩。

因為原生的webgo很復雜所以我們會常用一些三方的庫,比如three.js和Egret(白鷺引擎),使用三庫做H5游戲的比較多,實質都大同小異:場景、相機、渲染器,創建場景,組件相機,創建物體渲染到頁面;

13、深拷貝和淺拷貝

深度拷貝指的是Array和Object這樣的類型,淺拷貝是只拷貝一層值,而深拷貝是遍歷所有的拷貝。

14、兩個等號和三個等號的區別

兩個等是轉換類型對比值的,而三個等是不會進行轉換的,也就是類型不同,一定不會相等的;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM