今天參加了一場印象深入的筆試,想把它記錄下來,作一個知識補充做用。
答:html
響應(服務端-->客戶端)Response HTTP/1.1(協議版本)200(狀態碼)OK(描述信息) Location:http://www.baidu.com(服務端須要客戶端訪問的頁面路徑) Server:apache tomcat(服務端的Web服務端名) Content-Encoding:gzip(服務端可以發送壓縮編碼類型) Content-Length:80(服務端發送的壓縮編碼類型) Content-Language:zh-cn(服務端發送的語言類型) Content-Type:text/html;charset=GB2312(服務端發送的類型及採用的編碼方式) Last-Modified:Tue,11 Jul 2000 18:23:51 GMT(服務端對該資源最後修改的時間) Refresh:1;url=http://www.it315.org(服務端要求客戶端1秒鐘後,刷新,而後訪問指定的頁面路徑) Content-Disposition:attachment;filename=aaa.zip(服務端要求客戶端如下載文件的方式打開該文件) Transfer-Encoding:chunked(分塊傳遞數據到客戶端) Set-Cookie:SS=Q0=5Lb_nQ;path=/search(服務端發送到客戶端的暫存數據) Expires:-1(服務端禁止客戶端緩存頁面數據) Cache-Control:no-cache(服務端禁止客戶端緩存頁面數據) Pragma:no-cache(服務端禁止客戶端緩存頁面數據) Connection:close(1.0)/(1.1)Keep-Alive(維護客戶端和服務端的鏈接關係) Date:Tue,11 Jul 2000 18:23:51 GMT(服務端響應客戶端的時間) 請求(服務端-->客戶端)Request GET(請求方式)/newcoder/hello.html(請求的目標資源)HTTP/1.1(請求採用的協議和版本號) Accept:*/ *(客戶端能接收的資源類型) Accept-Language:en-us(客戶端接收的語言類型) Connection:Keep-Alive(維護客戶端和服務端的鏈接關係) Host:localhost:8080(鏈接目標主機和端口號) Referer:http://localhost/links.asp(告訴服務器我來自哪裏) User-Agent:Mozilla/4.0(客戶端版本號的名字) Accept-Encoding:gzip,deflate(客戶端能接收的壓縮數據的類型) If-Modifie-Since:Tue,11 Jul 2000 18:23:51 GMT(緩存時間) Cookie(客戶端暫存服務端的信息) Date:Tue,11 Jul 2000 18:23:51 GMT(客戶端請求服務端的時間)
console.log((function(a){}).length);//1 console.log((function(a = 5){}).length);//0 console.log((function(a,b = 5,c){}).length);//1 console.log((function(a,b = 5,c = 5){}).length);//1 console.log((function(a,b,c = 5){}).length);//2
解答:該題考察的是es6中函數長度的問題,具體的解析能夠參考下圖(圖片來自阮一峯大神的es6入門):es6
function splitUrl(url){ var arr = url.split('?')[1].split('&'); var json = {}; var key,value = null; for(var i=0;i<arr.length;i++){ key = arr[i].split('=')[0]; value = arr[i].split('=')[1]; json[`"${key}"`] = value; } return json; } var result = splitUrl('www.baidu.com?a=1&b=2&c=5'); console.log(result);
答:這道題只在1和3中糾結,1中的變量名實際上是合法的,糾結的地方在於可否直接賦值爲NaN,其實這個是能夠的,使用typeof NaN,會發現返回的是number,因此也是能夠賦值給該變量的;而3的特殊之處在於//實際上是js中的註釋語句,因此直接將其賦值給變量會報錯。apache
答:json
var a = 0,b = 0; function add(a){ add = function(b){ console.log(++a + b++); } console.log(a++); } add(1);//1 add(2);//5
分析:首先,第一次運行的是外面的函數,a=1進去以後,執行a++,因爲a++是先運算再賦值,因此輸出的是1;第二次運行的是內部函數,此時a的值爲2,傳進去b的值爲2,++a == 3,b++ == 2,因此最後輸出的是5。緩存
var c = { name:'Json', sayName:function(){ console.log(this.name); } }; var name = 'Aaron'; function sayName(){ var sss = c.sayName; sss(); c.sayName(); (c.sayName)(); (b=c.sayName)(); } sayName();
結果:
分析:
第一個是sss(),實際上this是指向全局變量的,也就是說輸出的應該是全局的name,即Aaron;第二個this是指向c的,那麼輸出的就是c中的name屬性值;第三個this指向c,和第二個是同樣的;第四個this指向全局變量。tomcat