1、js的基本型別有哪些?引用型別有哪些? null 和 undefined 區別是什麼?
基本型別:null、undefined、number、string、boolean、symbol
引用型別:object、array、date、regexp、function
原始型別儲存的都是值,是沒有函式可以呼叫的,比如undefined.tostring()
會報typeerror的錯
null
用來表示尚未存在的物件;當宣告的變數還未被初始化時,變數的預設值為undefined
注意的是typeof null
返回為object
,因為特殊值null被認為是乙個空的物件引用
null是乙個表示"無"的物件,轉為數值時為0;undefined是乙個表示"無"的原始值,轉為數值時為nan
undefined == null // true
從記憶體來看 null 和 undefined 本質的區別是什麼?給乙個全域性變數賦值為null,相當於將這個變數的指標物件以及值清空,如果是給物件的屬性 賦值為null,或者區域性變數賦值為null,相當於給這個屬性分配了一塊空的記憶體,然後值為null, js會**全域性變數為null的物件。
給乙個全域性變數賦值為undefined,相當於將這個物件的值清空,但是這個物件依舊存在,如果是給物件的屬性賦值 為undefined,說明這個值為空值
2、typeof 和 instanceof 區別,instanceof原理?
typeof 返回值:number、 boolean、string、undefined、object、function
typeof是一元運算子,返回值為字串,該字串用來說明運算數的資料型別 (陣列、正則、日期、物件的typeof返回值都是object)
instanceof用於判斷某個變數是否是某個物件的例項,返回值為true或false
3、=== 和 ==
[
]===
//false
undefined === undefined //true
==[]//false
undefined == undefined //true
4、如何判斷乙個變數是array型別?如何判斷乙個變數是number型別?let arr =
typeof arr ===
'object'
arr instanceof
array
===true
arr.constructor === array
array.
isarray
(arr)
===true
object.prototype.tostring.
call
(arr)
==="[object array]"
object.prototype.tostring.
(arr)
==="[object array]"
let num =
1typeof num ===
'number'
a.constructor === number
object.prototype.tostring.
call
(num)
==="[object number]"
object.prototype.tostring.
(num)
==="[object number]"
5、如何正確判斷 this?箭頭函式的 this 是什麼?function
foo(
)var a =
1foo()
const obj =
obj.
foo(
)const c =
newfoo
()
我們乙個個分析上面幾個場景
下面看看箭頭函式中的this
functiona(
)}}console.
log(a(
)()(
))
首先箭頭函式其實是沒有this
的,箭頭函式中的this
只取決包裹箭頭函式的第乙個普通函式的this
。
在這個例子中,因為包裹箭頭函式的第乙個普通函式是a
,所以此時的this
是window
。另外對箭頭函式使用bind
這類函式是無效的。
如果對乙個函式進行多次bind
,那麼上下文會是什麼呢?
let a =
letfn
=function()
fn.bind()
.bind
(a)(
)// => ?
// 可以把上述**轉換成另一種形式
// fn.bind().bind(a) 等於
letfn2
=function
fn1().
(a)}
fn2(
)// 可以從上述**中發現,不管我們給函式 bind 幾次,fn 中的 this 永遠由第一次 bind 決定,所以結果永遠是 window。
以上就是this
的規則了,但是可能會發生多個規則同時出現的情況,這時候不同的規則之間會根據優先順序最高的來決定this
最終指向**。
首先,new
的方式優先順序最高,接下來是bind
這些函式,然後是obj.foo()
這種呼叫方式,最後是foo
這種呼叫方式,同時,箭頭函式的this
一旦被繫結,就不會再被任何方式所改變。
高頻面試題 day8
面試題 請寫 一段js程式提取url中各個get引數 引數名和引數個數不確定 將其key value 形式返回到乙個json結構中,如 doctype html en utf 8 viewport content width device width,initial scale 1.0 docume...
前端面試準備Day1
今天開始為前端面試做準備啦,這兩天可能不會學很多,因為這周準備把大創結題報告寫完,還有專案的軟著申請也要寫完了,拖得時間太長了。因為之前剛剛把計算機網路看完第一遍,所以這兩天準備把html相關面試知識看完。今天是第一天的學習!相同點 都是用來引用外部的資源 不同點 src 相當於代替所引用資源的全部...
前端基礎面試題
padding 內邊距 margin 外邊距 border 邊框 1 外盒尺寸計算 元素空間尺寸 element空間高度 content height padding border margin element 空間寬度 content width padding border margin 2 內...