陣列去重
http
狀態碼
css
彈性布局
position
屬性有哪些值,分別有什麼含義
const
和let
的區別,可以改變const
定義物件某個屬性嗎
this
的理解, 如何改變this
的指向
let
和var
的區別,let
的產生背景
var
的變數提公升底層原理是什麼
箭頭函式,箭頭函式的特點
相同點: 都可以改變函式呼叫的this指向
不同點:
bind
的傳參方式和call
相同,但是改變呼叫函式的指向並返回乙個新的函式,之後再呼叫這個函式時候this
就指向bind
繫結的第乙個引數
call
語法
fun.call(thisarg,arg1,arg2,...)
thisarg
是fun
函式執行時指定的this
值(在非嚴格模式下,指定為null
或undefined
時會自動指向全域性物件)
arg1,arg2,...
是指定的引數列表
thisarg
是fun
函式執行時指定的this
值(在非嚴格模式下,指定為null
或undefined
時會自動指向全域性物件)
argsarray
是乙個陣列或類陣列物件,陣列中的元素將作為單獨的引數傳給fun
函式,如果argsarray
為null
或undefined
時表示不需要傳入任何引數。
示例:陣列沒有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的值
const
與let
都只在宣告的塊級作用域內有效
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 這個屬性的標籤都擁有跨域...