1. JS基本的數據類型和引用類型
基本數據類型:number、string、null、undefined、boolean、symbol -- 棧
引用數據類型:object、array、function -- 堆
兩種數據類型存儲位置不同
原始數據類型是直接存儲在棧(stack)中的簡單數據段,占據空間小、大小固定,屬于被頻繁使用數據;
引用數據類型存儲在堆(heap)中的對象,占據空間大、大小不固定,如果存儲在棧中,將會影響程序運行的性能;
引用數據類型在棧中存儲了指針,該指針指向堆中該實體的起始地址。
當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址后從堆中獲得實體。
2.介紹JS的內置對象數據封裝類對象:Object、String、Number、Boolean、Array
其他對象:Function、Data、Math、Arguments、RegExp、Error
ES6新增對象:Promise、Proxy、Map、Set、Symbol、Reflect
3.說幾條JavaScript的基本規范變量和函數在使用前聲明
語句結束后添加分號
代碼段使用{}包裹
以大寫字母開頭定義構造函數,以全大寫定義常量
用{} 和 []聲明對象和數組
使用===和!==來比較true和false或者數字值
4.eval是做什么的他的功能是把對應的字符串解析成JS代碼并運行;
他不安全,而且非常耗能(執行兩次,一次解析成JS代碼,一次執行)
5.對閉包的理解閉包是指有權訪問另一個函數作用域中變量的函數,創建閉包的最常見的方式就是在一個函數里創建另一個函數,通過另一個函數訪問這個函數的局部變量,利用閉包可以突破作用域鏈,將函數內部的變量和方法傳遞到外部
閉包的特性:函數內嵌套函數;內部函數可以引用外部的參數和變量;參數和變量不會被垃圾回收機制回收6.http狀態碼有哪些
簡單版
100 Continue 繼續,一般在發送post請求時,已發送了http header之后服務端將返回此信息,表示確認,之后發送具體參數信息 200 OK 正常返回信息 201 Created 請求成功并且服務器創建了新的資源 202 Accepted 服務器已接受請求,但尚未處理 301 Moved Permanently 請求的網頁已永久移動到新位置。 302 Found 臨時性重定向。 303 See Other 臨時性重定向,且總是使用 GET 請求新的 URI。 304 Not Modified 自從上次請求后,請求的網頁未修改過。 400 Bad Request 服務器無法理解請求的格式,客戶端不應當嘗試再次使用相同的內容發起請求。 401 Unauthorized 請求未授權。 403 Forbidden 禁止訪問。 404 Not Found 找不到如何與 URI 相匹配的資源。 500 Internal Server Error 最常見的服務器端錯誤。 503 Service Unavailable 服務器端暫時無法處理請求(可能是過載或維護)。
完整版
1**(信息類):表示接收到請求并且繼續處理 100——客戶必須繼續發出請求 101——客戶要求服務器根據請求轉換HTTP協議版本 2**(響應成功):表示動作被成功接收、理解和接受 200——表明該請求被成功地完成,所請求的資源發送回客戶端 201——提示知道新文件的URL 202——接受和處理、但處理未完成 203——返回信息不確定或不完整 204——請求收到,但返回信息為空 205——服務器完成了請求,用戶代理必須復位當前已經瀏覽過的文件 206——服務器已經完成了部分用戶的GET請求 3**(重定向類):為了完成指定的動作,必須接受進一步處理 300——請求的資源可在多處得到 301——本網頁被永久性轉移到另一個URL 302——請求的網頁被轉移到一個新的地址,但客戶訪問仍繼續通過原始URL地址,重定向,新的URL會在response中的Location中返回,瀏覽器將會使用新的URL發出新的Request。 303——建議客戶訪問其他URL或訪問方式 304——自從上次請求后,請求的網頁未修改過,服務器返回此響應時,不會返回網頁內容,代表上次的文檔已經被緩存了,還可以繼續使用 305——請求的資源必須從服務器指定的地址得到 306——前一版本HTTP中使用的代碼,現行版本中不再使用 307——申明請求的資源臨時性刪除 4**(客戶端錯誤類):請求包含錯誤語法或不能正確執行 400——客戶端請求有語法錯誤,不能被服務器所理解 401——請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用 402——保留有效ChargeTo頭響應 403——禁止訪問,服務器收到請求,但是拒絕提供服務 404——一個404錯誤表明可連接服務器,但服務器無法取得所請求的網頁,請求資源不存在。eg:輸入了錯誤的URL 405——用戶在Request-Line字段定義的方法不允許 406——根據用戶發送的Accept拖,請求資源不可訪問 407——類似401,用戶必須首先在代理服務器上得到授權 408——客戶端沒有在用戶指定的餓時間內完成請求 409——對當前資源狀態,請求不能完成 410——服務器上不再有此資源且無進一步的參考地址 411——服務器拒絕用戶定義的Content-Length屬性請求 412——一個或多個請求頭字段在當前請求中錯誤 413——請求的資源大于服務器允許的大小 414——請求的資源URL長于服務器允許的長度 415——請求資源不支持請求項目格式 416——請求中包含Range請求頭字段,在當前請求資源范圍內沒有range指示值,請求也不包含If-Range請求頭字段 417——服務器不滿足請求Expect頭字段指定的期望值,如果是代理服務器,可能是下一級服務器不能滿足請求長。 5**(服務端錯誤類):服務器不能正確執行一個正確的請求 500 - 服務器遇到錯誤,無法完成請求 502 - 網關錯誤 503:由于超載或停機維護,服務器目前無法使用,一段時間后可能恢復正常7.描述瀏覽器渲染的過程,DOM書和渲染樹的區別
瀏覽器渲染過程:
解析HTML構建DOM,并行請求css、image、js
css文件下載完成,開始構建CSSOM(CSS樹)
CSSOM構建結束后,和DOM一起生成Render Tree(渲染樹)
布局(layout):計算出每個節點在屏幕中的位置
顯示:通過顯卡把頁面畫到屏幕上
DOM樹和渲染樹的區別
DOM樹與HTML標簽一一對應,包括head和隱藏元素
渲染樹不包括head和隱藏元素,大段文本的每一個行都是獨立節點,每一個獨立節點都有對應的css屬性
8.如何最小化重繪(repaint)和回流(reflow)需要創建多個DOM節點時,使用DocumentFragment創建完成后一次性的加入document
緩存layout屬性值,減少回流次數,如const offsetLeft=element.offsetLeft
盡量避免使用table布局(table元素一旦觸發回流就會導致table里所有的其他元素回流)
避免使用css表達式,因為每次調用都會重新計算值(也會重新加載頁面)
盡量使用css屬性簡寫
將多次修改元素樣式合并成一次操作
9.介紹JavaScript的原型、原型鏈?有啥特點原型:
JavaScript的所有對象中都包含了一個 (__proto__ ) 內部屬性,這個屬性所對應的就是該對象的原型
JavaScript的函數對象,除了原型 (__proto__) 之外,還預置了 prototype 屬性
當函數對象作為構造函數創建實例時,該 prototype 屬性值將被作為實例對象的原型( __proto__)。
原型鏈:
當一個對象調用的屬性/方法自身不存在時,就會去自己(__proto__ )關聯的前輩 prototype 對象上去找
如果沒找到,就會去該 prototype 原型 ( __proto__) 關聯的前輩 prototype 去找。依次類推,直到找到屬性/方法或 undefined 為止。從而形成了所謂的“原型鏈”
原型特點:
JavaScript對象是通過引用來傳遞的,當修改原型時,與之相關的對象也會繼承這一改變
10.JavaScript如何實現繼承構造函數綁定:使用 call 或 apply 方法,將父對象的構造函數綁定在子對象上
function Apple(size, num) { Fruit.apply(this, arguments); this.size = size; this.num = num; }
ES6使用extends繼承
class Apple extends Fruit{ constructor() { super() } }
實例繼承:將子對象的prototype指向父對象的一個實例
Apple.prototype = new Fruit() Apple.prototype.constructor = Apple
原型繼承
function inherits(Child, Parent) { var F = function () {}; F.prototype = Parent.prototype; Child.prototype = new F(); Child.prototype.constructor = Child; }
拷貝繼承:如果把父對象的所有屬性和方法,拷貝進子對象
function extend(Child, Parent) { var p = Parent.prototype; var c = Child.prototype; for (var i in p) { c[i] = p[i]; } }11.什么是window對象,什么是Document對象
Window 對象表示當前瀏覽器的窗口,是JavaScript的頂級對象。
我們創建的所有對象、函數、變量都是 Window 對象的成員。
Window 對象的方法和屬性是在全局范圍內有效的。
Document 對象是 HTML 文檔的根節點與所有其他節點(元素節點,文本節點,屬性節點, 注釋節點)
Document 對象使我們可以通過腳本對 HTML 頁面中的所有元素進行訪問
Document 對象是 Window 對象的一部分,可通過 window.document 屬性對其進行訪問
12. 在一個DOM上同時綁定兩個點擊事件:一個用捕獲,一個用冒泡。事件會執行幾次,先執行冒泡還是捕獲?該DOM上的事件如果被觸發,會執行兩次(執行次數等于綁定次數)
如果該DOM是目標元素,則按事件綁定順序執行,不區分冒泡/捕獲
如果該DOM是處于事件流中的非目標元素,則先執行捕獲,后執行冒泡
13. 事件的代理/委托事件委托是指將事件綁定目標元素的到父元素上,利用冒泡機制觸發該事件
優點:
可以減少事件注冊,節省大量內存占用
可以將事件應用于動態添加的子元素上
缺點:
使用不當會造成事件在不應該觸發時觸發
14. 編寫一個方法 求一個字符串的字節長度function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i15. 列舉一下JavaScript數組和對象有哪些原生方法?255) bytes++; } return bytes; } alert(GetBytes("你好,as"));
數組:
arr.concat(arr1, arr2, arrn); arr.join(","); arr.sort(func); arr.pop(); arr.push(e1, e2, en); arr.shift(); arr.unshift(e1, e2, en); arr.reverse(); arr.slice(start, end); arr.splice(index, count, e1, e2, en); arr.indexOf(el); arr.includes(el); // ES6
對象:
object.hasOwnProperty(prop); object.propertyIsEnumerable(prop); object.valueOf(); object.toString(); object.toLocaleString(); Class.prototype.isPropertyOf(object);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95472.html
摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據我測試不同環境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續更新中……,可以關注下github 項目地址 https:...
摘要:最近遇到的前端面試題更新版前端掘金個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容非本人原創,是整理后覺得更容易理解的版本,歡迎補充。 一道面試題引發的對 javascript 類型轉換的思考 - 前端 - 掘金 最近群里有人發了下面這題:實現一個函數,運算結果可以滿足如下預期結果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金 從原博客遷移...
摘要:最近遇到的前端面試題更新版前端掘金個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容非本人原創,是整理后覺得更容易理解的版本,歡迎補充。 一道面試題引發的對 javascript 類型轉換的思考 - 前端 - 掘金 最近群里有人發了下面這題:實現一個函數,運算結果可以滿足如下預期結果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金 從原博客遷移...
摘要:最近遇到的前端面試題更新版前端掘金個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容非本人原創,是整理后覺得更容易理解的版本,歡迎補充。 一道面試題引發的對 javascript 類型轉換的思考 - 前端 - 掘金最近群里有人發了下面這題:實現一個函數,運算結果可以滿足如下預期結果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金從原博客遷移過來...
摘要:今天同學去面試,做了兩道面試題全部做錯了,發過來給道典型的面試題前端掘金在界中,開發人員的需求量一直居高不下。 排序算法 -- JavaScript 標準參考教程(alpha) - 前端 - 掘金來自《JavaScript 標準參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡介 算法實現 選擇排序 簡介 算法實現 ... 圖例詳解那道 setTimeout 與循環閉包的經典面...
平日學習接觸過的網站積累,以每月的形式發布。2017年以前看這個網址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進擊的 Promise Effective JavaScript leeheys blog -...
閱讀 1699·2021-11-12 10:36
閱讀 1615·2021-11-12 10:36
閱讀 3442·2021-11-02 14:46
閱讀 3798·2019-08-30 15:56
閱讀 3534·2019-08-30 15:55
閱讀 1463·2019-08-30 15:44
閱讀 1044·2019-08-30 14:00
閱讀 2735·2019-08-29 18:41