一、js支持重載嗎?javascript
雖然js 自己並無函數重載,可是能夠用arguments來模擬重載,函數名相同,參數不一樣,arguments的length屬性,獲取參數個數,索引屬性獲取參數值
二、什麼是做用域鏈對象?
專門保存了函數對象可用變量的位置的對象(棧)都有默認指向window對象地址。
三、什麼是閉包?
即反覆使用局部變量,又避免全局污染,就要用閉包。
閉包三特色:
1. 定義外層函數,封裝被保護的局部變量
2. 定義內層函數,執行對外層函數局部變量的操做
3. 外層函數返回內層函數的對象
四、實現開發不多使用,css
區別:html
jquery--clone(boolean)是否複製事件
DOM---cloneNode(boolean)是否複製後代節點,文本內容java
五、HTML DOM 與核心DOM?node
W3C DOM 標準被分爲 3 個不一樣的部分:核心 DOM、XML DOM、HTML DOM
HTML DOM:
HTML DOM 是:標準對象模型、標準編程接口、W3C 標準
HTML DOM 定義了全部 HTML 元素的對象和屬性,訪問和操做 HTML 文檔的標準方法。
換言之,HTML DOM 是關於如何獲取、修改、添加或刪除 HTML 元素的標準。
對象:image,Table,Form,Input,Select...HTML標籤對象化
HTML DOM提供了封裝好的各類對象:Image、Select、Option
給元素添加屬性:
img.src=''; img.id=''; imd.title=''; img.className='' img.style.display='';
適用場合:
HTML DOM適合操做屬性,如讀取或修改屬性的值jquery
核心DOM :
對象:Document,Node, ElementNode,TextNode,AttributeNode,CommentNode,NodeList
核心DOM提供了統一的操做接口:createElement、appendChild、setAttribute、removeAttribute、nodeName程序員
核心DOM建立新元素:
var newNode=document.createElement("img")
給元素添加屬性:
e.setAttribure(‘’,‘’)
e.setAttribureNode(attr)
適用場合:
核心DOM適合操做節點,如建立,刪除,查找等
HTML DOM不能實現全部功能,須要核心DOM補充,可是核心DOM能夠作一切,只是API巨長面試
六、jQuery中attr()與prop()區別介紹
ajax
對於HTML元素自己就帶有的固有屬性,,如ID,CLASS在處理時,使用prop方法。
對於HTML元素咱們本身自定義的DOM屬性,如data-index在處理時,使用attr方法。正則表達式
七、***事件週期:從瀏覽器捕獲到事件後,一直到最後一個事件觸發完,經歷的過程。
js事件(DOM標準)的三個階段分別爲:捕獲、目標、冒泡
--01. (由外向內)捕獲:(父級元素先觸發,子元素後觸發)從最外層html元素開始,向內逐層記錄每層元素綁定的事件處理函數。到目標元素爲止
--02. 目標觸發:自動執行目標元素上綁定的事件處理函數
--03. (由內向外)事件冒泡:(子級元素先觸發,父元素後觸發)從目標元素的父元素開始,逐層向上執行每層的事件處理函數,到最外層html結束。【目標元素是實際觸發的元素】
標準瀏覽器:addEventListener("click","doSomething","true")方法,若第三參數爲true則採用事件捕獲,若爲false,則採用事件冒泡
IE8的事件週期:2個階段:沒有捕獲
因此它不支持addEventListener("click","doSomething","true")方法,因此ie瀏覽器使用ele.attachEvent("onclick",doSomething)
八、JS有幾種數據類型:
兩種,基本數據類型(5種),引用類型(不肯定)
基本數據類型包含:number、 string、boolean、null 、undefined
引用類型:Object
、Array
和Function
九、用原生JS在兩個div之間插入一個div【.insertBefore(newItem,existingItem);】
html:<div class="div1"></div><div class="div3"></div>
var newdiv = document.createElement('div');
var div3 = document.querySelector('.div3');
div3.parentNode.insertBefore(newdiv,div3);
附加:B/S和C/S結構的區別
C/S結構,即Client/Server(客戶端/服務器)結構,熟知的軟件系統體系結構,經過將任務合理分配到Client端和Server端,下降了系統的通信開銷,能夠充分利用兩端
B/S結構,即Browser/Server(瀏覽器/服務器)結構,用戶界面經過WWW瀏覽器實現,可是主要事務邏輯在服務器端實現,造成所謂3-tier結構(三層結構)
十、Ajax實現的是B/S架構下的異步交互
十一、AJAX與服務器端創建鏈接open(method,url,async)方法
async - 設置是否異步(Boolean類型)、默認值爲true,表示異步、官方已經不推薦使用
十二、AJAX建立XMLHttpRequest對象的方法
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject('Microsoft.XMLHttp');
}
return xhr;
}
var xhr = getXhr();
1三、實現Ajax的六步是什麼?(不標準寫法)
面試時問四步,就答前四個,問六步就答這六個
* 建立XMLHttpRequest對象
* 創建鏈接
* 發送請求
* 註冊監聽 - onreadystatechange事件
* 獲取服務器端的通訊狀態 - readyState
* 獲取服務器端的狀態碼
最後答一下,最後兩步和註冊監聽應該放一塊兒,不該該分開
官方規範給AJAX實現步驟就四步
1四、HTML、XHTML、DHTML和XML的區別
--01:HTML就是網頁 - 元素定義大小寫
--02:XHTML就是嚴格意義的HTML - 元素定義小寫
--03:DHTML - BOM|DOM
--04:XML做用:配置文件|數據格式
1五、HTML(文本格式)、XML格式及JSON格式的優缺點
--01:HTML格式
--優勢 - 簡單
--缺點 - 解析複雜
--02:XML格式
--優勢 - 易於構建複雜數據
--缺點 - 構建、解析複雜
--03:JSON格式
-- 優勢 - 輕量級
--缺點 - 可能轉換失敗
16:跨域有兩種:
(1)徹底跨域 - IP不一樣【可理解成不一樣電腦】
--http://www.baidu.com
--http://www.tedu.cn
(2)跨子域 - IP相同,但端口號不一樣
--http://127.0.0.1:8888
--http://127.0.0.1:9999
02:域名
(1)頂級域名:如、http://www.baidu.com
(2)二級域名
--http://wenku.baidu.com
--http://www.baidu.com/kongjian
1七、如何實現跨域請求【面試題】
經過 HTTP GET 請求載入 JSON 數據。
使用JSONP形式的回調函數來加載其餘網域的JSON數據
JSONP - JSON Padding(JSON的一種使用模式)
核心內容 - HTML的<script>元素具備開放策略
實現方式
$.getJSON()方法的url後增長請求數據: url?callback=?
擴展內容:
null空實際不存在,爲了安全,不出漏洞,爲邏輯的完整性
如:判斷value值是否爲空
value==""||value==null
如:validity.tooLong,不會出現大於maxLength問題,代碼中也要排除
什麼是邏輯的完整性?【面試題】
個人代碼適合你各類狀況,要考慮清楚,代碼中能不能出現的問題 ,都考慮進去,代碼中都有寫
1八、Get與Post的主要區別
get相對於post更不安全,雖然均可以加密
get的參數會顯示在瀏覽器地址欄中,而post的參數不會顯示在瀏覽器地址欄中;
使用post提交的頁面在點擊【刷新】按鈕的時候瀏覽器通常會提示「是否從新提交」,而get則不會;
用get的頁面能夠被搜索引擎抓取,而用post的則不能夠;
用post能夠提交的數據量很是大,而用get能夠提交的數據量則很是小(2k),受限於網頁地址的長度。
用post能夠進行文件的提交,而用get則不能夠。
1九、JS中的typeof方法能夠查看數據的類型
console.log(typeof 2); // number
console.log(typeof "2"); // string
console.log(typeof true); // boolean
console.log(typeof [2]); // object
console.log(typeof {name:2});// object
console.log(typeof function(){return 2});// function
console.log(typeof new Date());// object
console.log(typeof null); // object
console.log(typeof undefined);// undefined
20、數組的基本操做
push() 在數組末尾添加一個元素
pop() 在數組末尾刪除一個元素
shift() 刪除數組第一個元素
unshift 在數組開頭添加一個元素
concat() 方法用於鏈接兩個或多個數組
splice() 刪除、插入、替換
一、刪除功能,第一個參數爲第一項位置,第二個參數爲要刪除幾個。array.splice(index,num),返回值爲刪除內容,array爲結果值。
二、插入功能,第一個參數(插入位置),第二個參數(0),第三個參數(插入的項)。array.splice(index,0,insertValue),返回值爲空數組,array值爲最終結果值。
三、替換功能,第一個參數(起始位置),第二個參數(刪除的項數),第三個參數(插入任意數量的項)。array.splice(index,num,insertValue),返回值爲刪除內容,array爲結果值。
slice() 方法可從已有的數組中返回選定的元素。
arrayObject.slice(start,end)
返回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
2一、正則表達式-基礎知識Review
https://www.cnblogs.com/lalalagq/p/9750510.html
2二、H5的Worker對象?
總結一句話,多線程解決方案,優點,如本課講的售票系統例子
Web Workers 是 HTML5 提供的一個javascript多線程解決方案,
Web Worker的基本原理就是在當前javascript的主線程中,使用Worker類加載一個javascript文件來開闢一個新的線程,起到互不阻塞執行的效果,而且提供主線程和新線程之間數據交換的接口:postMessage()方法,onmessage事件。
總結:
HTML5中提供最好的內容---Web存儲系統:
2三、cookie存在的弊端:
一、cookie存儲以鍵值對的形式保存,即key=value的格式、各個cookie之間通常是以";" 分隔。且value不能寫「中文」。必須英文
二、cookie存儲大小有限制:--一個瀏覽器最多隻能存200個cookie文件,每一個cookie文件大小有限制,不能存太多
三、Cookie存儲在用戶電腦硬盤中,
2四、sessionStorage與localStorage
(1)sessionStorage存儲系統存儲數據的特色
* 當瀏覽器窗口關閉時,數據所有丟失
* 當再次打開瀏覽器窗口時,數據不能使用
(2)localStorage存儲系統存儲數據的特色
* 當瀏覽器窗口關閉時,數據依舊存儲
* 當再次打開瀏覽器窗口時,數據繼續使用
* 數據只能由用戶刪除
2五、跨域請求:
同源策略--位於不一樣的域之間不能相互訪問
實現跨域:
使用JSONP(JSON With Padding-JSON的一種使用模式)實現跨越
什麼是JSONP:在html頁面中的<script>元素具備開放策略,經過該元素實現跨域請求
其實是使用$.getJSON()方法實現跨域:$.getJSON("url?callback=?",function(data){})
2六、***按值傳遞(對於原始類型、對於引用類型):
兩變量間賦值,或將變量做爲參數傳入函數時,其實僅將原變量中值,複製一個副本給對方變量:
對(原始類型)基礎類型: 修改新變量的值,不影響原變量;
按值傳遞的差異:
原始類型:
//考點:按值傳遞!原始類型:修改新變量的值,不影響原變量;
var card=10;//全局 function pay(card){//局部 card-=3;//局部 console.log('餘額'+card);////局部局部 } pay(card);//7 //全局 console.log('餘額'+card);//10
對引用類型: 僅複製對象的地址給對方,不建立新對象
經過新變量修改對象,等效於修改原對象
//考點:按地址傳遞!引用類型:地址給對方,當於修改原對象
var dong=["包","包","包","包","包"];
//0x1234
var xu=dong;
xu.length--;
console.log(dong)//["包","包","包","包"];
引用類型,
var my=["包","包","包","包","包"];
function eat(my){
my.length--;
console.log(my);
}
eat(my);//["包", "包", "包", "包"]
console.log(my)//["包", "包", "包", "包"]
2七、null 和 undefined
null:是javascript關鍵字,描述「空值」,執行typeof,返回「object」,特殊對象值;可表示「數字」,「字符串」,「對象」是 「無值」的。
undefined:預約義的全局變量,值爲「未定義」,是變量的一種取值,表示未初始化。
當查詢對象屬性、數組元素的值時,如返回undefined表示屬性或元素不存在;如函數沒有任何返回值,也返回undefined。
只能從用法:
undefined:,專門由javaScript語言本身使用,爲變量自動賦初值。
null,專門給程序員使用,手動清除一個變量的內容。
PS:雖然null和undefined是不一樣的,但都表示"值的空缺"二均可互換。null == undefined 結果爲true ,===時爲false 來區別,
什麼時候須要清空一個變量:
只要一個變量引用的大對象再也不被使用時,都要主動清空變量。
(面試,談談理解) 垃圾回收: js引擎會自動釋放再也不被任何變量引用的對象
垃圾回收器: 專門回收再也不使用的對象的小程序,在內存中自動執行的小程序
一、記錄每一個對象,被幾個變量引用着
每多一個變量引用對象,計數器就+1
當一個變量賦值爲null時,表示再也不引用對象,計數器-1
二、回收再也不被任何變量引用的對象
當計數器減到0時,對象就被垃圾回收器回收
好的習慣: 只要一個對象再也不使用,都要主動將變量置爲null
null==undefined --》true
2八、hash數組方法去重面試中寫這種:【優勢,這段代碼速度很快,hash快,不須要遍歷,直接找】
unction unique1(arr){ for(var i=0,hash=[],result=[];i<arr.length;i++){ //若是hash中以arr當前元素爲key的元素是undefined if(hash[arr[i]]===undefined){ result[result.length]=arr[i]; //將arr當前元素追加到result結尾 //爲hash添加新元素,key爲arr當前元素值,value都賦值爲true hash[arr[i]]=true; //寫true等什麼均可以,就是告訴有了,只要不是"undefined"就行 } } return result; } console.log(String(unique1([2,3,2,1,3,4,1,5])))
面試題 :注意:平時不用,但面試時會問到:談談對包裝類型的理解?
2九、包裝類型:
什麼是:專門封裝原始類型的值 ,並提供操做原始類型值的API
爲何:原始類型的值自己沒有任何功能!必須藉助外部的對象提供功能。
什麼時候:只要對原始類型的值調用API時,自動建立包裝類型來輔助原始類型的值完成操做!
如何:不用手動建立和調用,都是自動建立和調用
好比:n.toFixed(2)--------->等效 ----->new Number(n).toFixed(2)
toFixed執行後,Number對象釋放!
"張".charCodeAt()--------->等效 ----->new String('張').charCodeAt() 結果24352
30、js中有幾類錯誤類型:6
SyntaxError:語法錯誤
ReferenceError:引用錯誤,找不到變量或對象
TypeError: 類型錯誤:錯誤的使用了類型、錯誤的使用的類型中方法
如:console.log(),把log寫成l0g,寫錯時、
以下都報TypeError錯誤:document.log("e")、undefined()
RangeError:範圍錯誤,參數超範圍
如:var n=123.456; n.toFixed(-1)會報錯,toFixed()範圍在0-20之間,實踐中1-100
EvalError:調用eval函數時出錯
URLError::URL錯誤
3一、CSS Sprites是什麼,技術的優缺點?
CSS Sprites是一種網頁圖片應用處理方式,就是把網頁中一些背景圖片整合到一張圖片文件中,再利用CSS的「background-image」,"background-repeat","background-position"的組合進行背景定位。
優勢:
減小網頁HTTP請求(一次就好)、提升性能,在移動端尤其明顯; 減少圖片的總大小; 減小命名困擾; 更換風格方便,例如改背景色,好維護。
缺點:
圖片合成比較麻煩; 背景設置時,須要獲得每一個背景單元的精準位置; 維護合成圖片時,最好只是往下加圖片,不要更改圖片;
3二、什麼是DOM迴流?
頁面渲染時,咱們對HTML結構簡單的增刪查改時,瀏覽器會對全部的dom進行從新排序,這就i是DOM迴流,嚴重影響瀏覽器性能
3三、提高頁面性能優化
1.多采用雪碧圖
2.防止超連接默認行爲
3.減小DOM迴流
4.減小向服務器發送請求次數
鄙視題:
[]==[]---》 false,[]是新建數組的意思,新建了兩個數組,地址不同
3四、
1、棧(堆棧)
棧是一種後進先出的數據結構
JS也爲數組提供了方法能夠實現相似入棧出棧功能, 入棧push()、 出棧pop();
2、隊列
隊列是一種先進先出的數據結構。
3五、Ajax的優缺點?
優勢:
頁面局部刷新,提升用戶體驗度; 使用異步方式與服務器通訊,具備更加迅速的響應能力; 減小服務器負擔; 基於標準化,並被普遍支持的技術,不須要下載插件或小程序。
不支持瀏覽器back按鈕; 安全問題; 對搜索引擎的支持比較弱;
3六、簡述Ajax的交互模型,以及同步和異步的區別?(達內)
Ajax主要用於實現從服務器獲取數據並局部刷新頁面。其交互模型爲,Ajax在瀏覽器端引入一個執行引擎,它一邊接收user的請求,一邊傳送數據給服務器,並把服務器端返回的結果展現給user。
同步:腳本會停留並等待服務器發送回覆而後繼續。
異步:腳本不停留並處理可能的回覆。
3七、在此說明下alt和tite的區別。
alt:這是用以描述圖形的文字,當圖片沒法顯示時,這些文字會替代圖片而被顯示。當鼠標移至圖片上該些文字亦會顯示。
title:是鼠標放上去以後,會顯示出來的文字。
3八、簡單描述AJAX的理解?
AJAX全稱是 (Asynchronous) 異步的 javascript and XML。具體交互式網頁應用的網頁開發技術,能夠實現異步請求和局部刷新。
AJAX包含的技術:
基於WEB標準XHTML+CSS的表示 使用DOM(Document ObjectModel)進行動態顯示及交互 使用XML和XSLT進行數據交互及相關操做 使用XMLHttpRequest進行異步數據查詢,檢索
3八、介紹一下XMLHttpRequert對象
AJAX的核心是JavaScript對象XmlHttpRequest,該對象在Internet Explorer 5中首次引入,它是一種支持異步請求的技術。簡而言之,XmlHttpRequert可使用JavaScript向服務器提出請求並處理響應,而不阻塞用戶。經過XmlHttpRequert對象,Web開發人員能夠在頁面加載後進行頁面的局部更新。
3九、jQuery實現Ajax請求,詳細信息以下:(達內)
請求url:carifo.de
發送方式:post
發送數據:id爲s1的文本框值
返回數據:json格式
請求成功:將返回數據寫入id爲s2的文本框中
請求失敗:彈出文本「系統錯誤」
$.ajax({ url:"carinfo.do", type:'POST', data:$('#s1').val(), dataType:'json', success:function(resText){ $('#s2').val(resText) }, error:function(){ alert('系統錯誤'); } });
40、請寫出至少5種常見的http狀態碼以及表明意義(參考達內)
200(ok) - 請求成功。
303(See Other)- 告知客戶端使用另外一個URL來獲取資源。
400(Bad Request) - 請求格式錯誤。1)語義有誤,當前請求沒法被服務器理解。2)請求參數有誤。
404(Not Found):請求失敗,請求所但願獲得的資源在服務器上未被發現。
500(Internal Server Error):服務器遇到不曾預料的情況,致使沒法完成請求處理。
4一、body中onload()函數和jQuery中的$(document).ready()有什麼區別?
能夠在頁面中使用多個document.ready()。但只能使用一次onload(),後面會覆蓋前面的了。
document.ready()函數在頁面DOM元素加載完成之後就會被調用,速度比onload()快,而onload()函數則要在全部的關聯資源(包含圖像,音頻)加載完畢纔會調用。
---恢復內容結束---