拼多多筆試

拼多多筆試

今天下午三點的筆試,前端方向70分鐘,在這次的筆試中,也發現了一些自己以前沒注意到的問題,決定把這些東西整理一下,注:以下內容完全來自於自己的回憶,如果有差錯,還望指正

“+”的問題

第一個選擇題是一個和“+”有關係的題目,首先,在JS中“+”是存在二義性的,就是它可以表示字符串的連接,也可以表示加號,進行以下嘗試

1 + ‘3’ + ‘4’
“134”
1 + +’3’ + ‘4’
“44”
‘a’ + ‘b’ + 8
“ab8”
‘a’ - ‘b’ + 8
NaN
‘a’ - ‘b’ + ‘2’
“NaN2”

鼠標點擊 input 元素後默認觸發的事件執行順序

之前沒有做過這方面執行順序的探究,現在來做一個測試,下面是測試代碼

<input type="text" name="" id="in">
<script type="text/javascript">
  var oIn = document.getElementById('in');
  oIn.onmousedown = function() {
    console.log('mousedown');
  }
  oIn.onmouseup = function() {
    console.log('mouseup');
  } 
  oIn.onfocus = function() {
    console.log('focus');
  } 

  oIn.onclick = function() {
    console.log('click');
  }
</script>

輸出結果如下:

mousedown

focus

mouseup

click

所以執行順序是,鼠標按下,獲得焦點,鼠標彈起,獲得點擊

注意:在 IE 瀏覽器中,在 MouseDown 事件的處理函數中,取消瀏覽器默認行爲執行後,如果點擊的是可獲得焦點的元素 (如 INPUT) ,那麼他依然會獲得焦點並觸發 Focus 事件。

而在非 IE 瀏覽器中,此情況下元素無法獲得焦點,也不會觸發 Focus 事件

參考這裏

阻止a標籤的跳轉

<a href="https://www.baidu.com/" id="oa">點擊</a>
<script type="text/javascript">
  var oA = document.getElementById('oa');
  oA.onclick = function(event) {
    console.log('click');
    if(event.preventDefault) {
      event.preventDefault(); 
    }else {
      event.returnVale = false;
    }           
  }
</script>

剛纔測試了onmousedown和onmouseup,並不能阻止跳轉

還有這樣的方法

<a href="javascript:void(0);" >點擊</a>
<a href="javascript:;" >點擊</a>

關於this

attachEvent中的this指向的是window,而不是調用它的DOM對象

elem.attachEvent("on"+type,function(){
  fn.apply(elem,arguments);
}); 

使用new的時候,構造函數的this指向創建的實例對象

狀態碼

400 Bad Request客戶端請求語法錯誤,不能被服務器所理解

403 Forbidden 服務器收到請求,但是拒絕提供服務

401 未授權,一般來說該錯誤消息表明你首先需要登錄(輸入有效的用戶名和密碼)。如果你不輸入這些信息,就會有401錯誤,這意味着驗證信息出錯,服務器無法識別你的身份

HTTP 2.0

HTTP 2.0最大的特點: 不會改動HTTP 的語義,HTTP 方法、狀態碼、URI 及首部字段,等等這些核心概念上一如往常,卻能致力於突破上一代標準的性能限制,改進傳輸性能,實現低延遲和高吞吐量。而之所以叫2.0,是在於新增的二進制分幀層

HTTP2.0的優勢:

  • 二進制分幀,應用層(HTTP2.0)和傳輸層(TCP or UDP)之間增加一個二進制分幀層,採用二進制傳輸數據,而非HTTP1.1的文本格式,二進制格式在協議的解析和優化擴展帶來更多的優勢和可能
  • 對消息頭採用HPACK進行壓縮傳輸,能夠節省消息頭佔用的網絡的流量,而HTTP1.1每次請求,都會攜帶大量冗餘頭信息,浪費了很多帶寬資源
  • 多路複用,就是多個請求都是通過一個TCP連接連接併發完成,還支持優先級和流量控制
  • 服務器推送,服務器能夠更快的把資源推送給客戶端,例如主動推送JS和CSS文件,而不需要客戶端解析HTML再發送這些請求

代碼輸出

console.log(a);
a = 3;

error

a是一個全局變量,但是如果輸出,window.a就是undefined

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章