十道前端面試題(1)

2021-09-28 17:37:17 字數 3458 閱讀 8796

陣列去重

http狀態碼

css彈性布局

position屬性有哪些值,分別有什麼含義

constlet的區別,可以改變const定義物件某個屬性嗎

this的理解, 如何改變this的指向

letvar的區別,let的產生背景

var的變數提公升底層原理是什麼

箭頭函式,箭頭函式的特點

相同點: 都可以改變函式呼叫的this指向

不同點:

bind的傳參方式和call相同,但是改變呼叫函式的指向並返回乙個新的函式,之後再呼叫這個函式時候this就指向bind繫結的第乙個引數

call語法

fun.call(thisarg,arg1,arg2,...)thisargfun函式執行時指定的this值(在非嚴格模式下,指定為nullundefined時會自動指向全域性物件)

arg1,arg2,...是指定的引數列表

thisargfun函式執行時指定的this值(在非嚴格模式下,指定為nullundefined時會自動指向全域性物件)

argsarray是乙個陣列或類陣列物件,陣列中的元素將作為單獨的引數傳給fun函式,如果argsarraynullundefined時表示不需要傳入任何引數。

示例:陣列沒有max方法,可以使用math物件上的max方法

const arr = [1,2,3,4,5,6];
bind語法

fun.bind(thisarg,arg1,arg2,...)thisarg當繫結函式被呼叫時,該引數會作為原函式執行時的this指向。當使用new 操作符呼叫繫結函式時,該引數無效。

arg1, arg2, ...當繫結函式被呼叫時,這些引數將置於實參之前傳遞給被繫結的方法。

// 如果你某個函式繫結新的this指向並且固定先傳入幾個變數可以在繫結的時候就傳入,之後呼叫新函式傳入的引數都會排在之後

const obj = {}

function test(...args)

const newfn = test.bind(obj, 1,2);

newfn(3,4); // [1,2,3,4]

使用場景

當乙個函式需要改變this指向時

且引數較少時可以使用call如果想生成乙個新函式長期繫結某個物件時,可以使用bind

let arr = [1,1,1,1,2,3,4,5,5,6];

arr = [...new set(arr)]; // [1,2,3,4,5,6]

function unique(arr)

} return arr;

}

position屬性規定元素的定位型別

屬性值描述

absolute

生成絕對定位的元素。相對於除了static定位以外的第乙個父元素定位

fixed

生成絕對定位的元素,相對於瀏覽器視窗定位

relative

生成相對定位元素,相對於自己原來的位置定位

static

預設值。沒有定位,元素出現在正常流中(忽略 top, bottom, left, right 或者 z-index 宣告)

inherit

繼承父元素position的值

constlet都只在宣告的塊級作用域內有效

let宣告的變數可以改變,值和型別都可以改變,且可以先宣告,後賦值。

const宣告乙個常量,值不可以改變,且一旦宣告就得賦值。

對於const宣告乙個引用型別的變數(如:陣列,物件),變數名不指向資料,而是指向引用型別資料所在的位址(即變數儲存的是指向這個引用型別的指標),因此可以改變const定義物件的某個屬性值。

this值函式執行時所在的環境(即呼叫的物件)

可以理解為誰呼叫函式,this就指向誰

let宣告變數會形成塊級作用域,var不能

let宣告變數只能先宣告後使用(暫時性死區),即let不存在變數提公升

示例:

console.log(a); // a is not defined

js引擎的工作方式:

先解析**,獲取所有宣告的變數

然後再執行

也就是分為預處理和執行兩個階段

變數提公升的定義: 所有的變數宣告語句會被提公升到宣告變數所在作用域的頭部

定義與賦值分離

示例:

console.log(a);    // 報錯 a is not defined
console.log(b);   // undefined

var b = 1;

上面的**相當於:

var b;

console.log(b); // undefined

b = 1;

相比普通函式更簡潔的語法

本身沒有this,捕獲其所在上下文(作用域)的this值,作為自己的 this 值

不能使用new不繫結arguments,用rest引數...解決

箭頭函式沒有原型屬性

不能簡單返回物件字面量

箭頭函式不能當做generator函式,不能使用yield關鍵字

十道前端面試題(2)

為什麼css樣式初始化,目的是為了什麼 js繼承 常見布局的方法 rem,px,em的區別 typeof去判斷資料型別返回值有哪些 快排和冒泡的原理 清除浮動的方法 定時器settimeout的執行機制 get和post的請求區別 浮動元素有什麼特性 之所以要進行css樣式初始化是因為不同瀏覽器對標...

十道前端面試題(9)

前端效能理解,優化有哪些 為什麼瀏覽器會產生同源策略 如何獲取元素的父節點和兄弟節點 jsonp的原理是什麼,處理script標籤還可以通過什麼實現?靜態資源標籤 http請求頭,響應頭裡面有哪些 margin坍塌 寫乙個api實現insertafter promise的狀態有哪些 preventd...

前端面試 前端面試題300道

jsonp是如何產生的 1 乙個眾所周知的問題,ajax直接請求普通檔案存在跨域無許可權問題,甭管你是靜態頁面 動態頁面 web伺服器,wcf,只要是跨域請求,一律不准。2 不過我們又發現,web頁面上呼叫js檔案時則不受是否跨域的影響 不僅如此,我們還發現凡是擁有 src 這個屬性的標籤都擁有跨域...