好程序員web前端教程分享JavaScript面試題

  好程序員web前端教程分享JavaScript面試題前端

  一、JavaScript this指針、閉包、做用域程序員

  this:指向調用上下文web

  閉包:內層做用域能夠訪問外層做用域的變量面試

  做用域:定義一個函數就開闢了一個局部做用域,整個js執行環境有一個全局做用域ajax

  二、JavaScript的同源策略json

  一段腳本只能讀取來自於同一來源的窗口和文檔的屬性,這裏的同一來源指的是主機名、協議和端口號的組合安全

  http,ftp:協議服務器

  主機名;localhostcookie

  端口名:80:http協議的默認端口session

  https:默認端口是8083

  同源策略帶來的麻煩:ajax在不一樣域名下的請求沒法實現,

  若是說想要請求其餘來源的js文件,或者json數據,那麼能夠經過jsonp來解決

  三、看下列代碼,輸出什麼?解釋緣由

  var undefined;//此時undefined這個變量的值是undefined

  undefined == null; // true

  1 == true; // true

  此時會把布爾類型的值轉換爲數字類型 true=1 false=0

  2 == true; // false

  0 == false; // true

  0 == ''; // true

  NaN == NaN; // false

  [] == false; // true

  [] == ![]; // true

  undefined與null相等,但不恆等(===)

  一個是number一個是string時,會嘗試將string轉換爲number

  嘗試將boolean轉換爲number,0或1

  嘗試將Object轉換成number或string,取決於另一個對比量的類型

  因此,對於0、空字符串的判斷,建議使用 「===」 。「===」會先判斷兩邊的值類型,類型不匹配時爲false。

  四、請你談談Cookie的弊端

  1.`Cookie`數量和長度的限制。每一個domain最多隻能有20條cookie,每一個cookie長度不能超過4KB,不然會被截掉。

  2.安全性問題。若是cookie被人攔截了,那人就能夠取得全部的session信息。即便加密也與事無補,由於攔截者並不須要知道cookie的意義,他只 要原樣轉發cookie就能夠達到目的了。

  3.有些狀態不可能保存在客戶端。例如,爲了防止重複提交表單,咱們須要在服務器端保存一個計數器。若是咱們把這個計數器保存在客戶端,那麼 它起不到任何做用。

  五、哪些操做會形成內存泄漏?

  內存泄漏指任何對象在您再也不擁有或須要它以後仍然存在。

  垃圾回收器按期掃描對象,並計算引用了每一個對象的其餘對象的數量。若是一個對象的引用數量爲0(沒有其餘對象引用過該對象),或對該對象的 唯一引用是循環的,那麼該對象的內存便可回收。

  1. setTimeout 的第一個參數使用字符串而非函數的話,會引起內存泄漏。

  2. 閉包

  3. 控制檯日誌

  4. 循環(在兩個對象彼此引用且彼此保留時,就會產生一個循環)

  六、輸出多少?

  var a = 6;

  setTimeout(function () {

  var a = 666;//因爲變量a是一個局部變量

  alert(a); // 輸出666,

  }, 1000);

  a = 66;

  由於var a = 666;定義了局部變量a,而且賦值爲666,根據變量做用域鏈,

  全局變量處在做用域末端,優先訪問了局部變量,從而覆蓋了全局變量。

  var a = 6;

  setTimeout(function () {

  //變量聲明提早

  alert(a); // 輸出undefined

  var a = 666;

  }, 1000);

  a = 66;

  由於var a = 666;定義了局部變量a,一樣覆蓋了全局變量,可是在alert(a);以前

  a並未賦值,因此輸出undefined。

相關文章
相關標籤/搜索