天天看點

前端面試遇到的問題

最近一場面試,發現了自己很多的問題,為此做個總結。非常感謝此次的面試。嘿嘿!
前端面試遇到的問題

下列代碼存在幾個變量沒有被回收?

答案是3個。第一個:全局變量i;第二個:函數變量add;第三個:局部變量i;

這兩行代碼,先用var聲明一個變量i然後指派,接着再次使用var聲明同一個變量順帶指派。畢竟var是可以重新聲明同一個變量的。

在這裡有個知識點需要了解。全局變量隻有在頁面關閉的時候才會銷毀。

是以以上兩行代碼運作後,隻有一個變量沒有被銷毀。

分析:首先定義了一個函數test,裡面有個變量x,指派3,然後列印。很簡單。接着運作這個函數,便是函數式程式設計思想的展現。

這裡的知識點是:函數裡面的局部變量,當函數運作後,裡面的變量會被銷毀。

分析:在這裡使用了閉包。結合這篇徹底搞懂JavaScript的閉包、防抖跟節流,應該便能夠徹底了解傳說中的閉包了。

這裡的知識點就是:使用閉包後,函數裡面的局部變量在函數運作後,不會被銷毀。暫時存放在全局變量中。

是以以上的變量x在test運作後不會被銷毀。

這個要跟上個區分一下,這裡雖然使用了閉包,但并沒有暫存到全局變量裡,是以沒有發揮出閉包的作用。

1、最簡單,ES5提供了一個方法。

2、instanceof

隻不過這裡有個弊端:必須要在同一個全局執行環境,是以ES5新增了Array.isArray()方法。

3、Object.prototype.toString.call()方法

拓展一下:

JavaScript中的基本資料類型:Number,String,Boolean,Undefined,Null,Object(數組,日期等),Symbol。

BFC全稱:block formmating context,直譯為”塊級格式化上下文”。我還是第一次聽到這個。

既然不知道,那隻好自己去搜尋一下喽。

BFC規範:

前端面試遇到的問題

詳情就不多說了,請看部落格:CSS-BFC的概念及其作用

這個,我還是第一次注意到這個問題。

前端面試遇到的問題

先看到底是什麼問題?

就這麼一行代碼

前端面試遇到的問題

仔細看看,的确有這麼個問題:

圖檔的底部跟文字的底部不在一起。

檢視一下元素,發現圖檔并沒有設定相應的margin或者padding。

這是為啥?

查了一下,才發現圖檔預設的是display:inline;

圖檔是行内元素。行内元素有個vertical-align屬性,這個屬性預設值是:baseline,将其設定為bottom即可。

前端面試遇到的問題

eval函數可以執行裡面的代碼。

面試完後,發現自己還挺享受面試的過程的,竟然還挺陶醉的。收獲頗多

前端面試遇到的問題

面試官随和一點,就像聊家常一樣(不然很受拘束,會難受的

前端面試遇到的問題

),以問答形式即可,達到那種一針見血的效果。簡單、直接、粗暴。