JS基礎知識點與常考面試題(一)

2021-10-24 21:38:26 字數 1373 閱讀 5981

涉及面試題:原始型別有哪些?null是物件嗎?

在js中原始的型別有6種,string、number、boolean、null、undefined、symbol【es6】,首先原始型別儲存的值都是值,是沒有函式可以呼叫的,如undefined.tostring(),

此時可能會有乙個疑問,『123』.tostring() =>「123」,後者可以呼叫,前者卻報錯,因為後者在呼叫是,「123"在執行的時候,會內部呼叫執行new string(),所以『123』已經不是原始型別了,而是被強製成了string型別,也就是物件型別,所以可以呼叫tostring()函式。

其外,原始型別還有一些坑。如,js的number型別是浮點型別的,有時候在使用時 0.1+0.2!==0.3,會有精度問題,造成這個無法避免的影響。string型別是不可變的,所以無論在string型別上呼叫何種方法,都不會對值有多改變。

對於null來說,很多人覺得null是物件型別,其實是錯誤的,雖然typeof null =>object,但是這是js的乙個悠久的bug,在js最初的版本中使用的是32位系統,為了 效能考慮使用低位儲存變數的型別資訊,000開頭代表的是物件,然而null表示為全零,所以使用typeof會將它錯誤判斷為是object。雖然現在內部型別判斷**已經改變了,但是這個bug卻一直流傳了下來。

涉及面試題:物件型別和原始型別的不同之處?函式引數是物件會發生什麼問題?

在js中,除了原始型別其他的都是物件型別了。原始型別儲存的是值,而物件型別儲存的是位址【指標】。當我們建立乙個物件型別的時候,計算機會在記憶體中幫我們開闢乙個空間來存放值,但是我們需要找到這個空間,空間會擁有乙個位址【指標】。如 let a = 對於變數a來說,假設記憶體位址為001,那麼在位址001的位置存放了值,變數 a存放了位址001,再看一下**

let a =

;let b = a;

b.push(1

);

當我們將變數賦值給另外乙個變數時,賦值的是原本變數的位址,也就是說,a,b裡面存放的位址暫時公用乙個位址也就是001,當我們修改資料時,就會修改存放在位址001的值,也就導致了兩個變數的值都發生了改變。

接下來是函式引數是物件的情況:

function

test

(person)

return person;

}let p1 =

let p2 =

test

(p1)

console.

log(p1)

console.

log(p2)

設計面試題:typeof能否正確判斷型別?instanceof能正確判斷物件的原理是什麼?

typeof對於原始型別來說

JS 基礎知識點及常考面試題(一)

分為6個基本型別 number,string,boolean,null,undefine,symble 陣列,物件,函式 typeof 基本型別 typeof出了null,判斷為object,其他均能正確判斷 引用型別 函式判斷為function,其他均為object instanceof 內部機制...

js基礎知識點及常考知識點 一

涉及面試題 原始型別有哪幾種?null 是物件嘛?在js中,存在著6中原始值,分別是 typeof string function typeof string undefined typeof string string 除了會在必要的情況下強轉型別以外,原始型別還有一些坑。最為明顯的就是js的0....

Linux面試常考知識點

同步 非同步 阻塞與非阻塞 推薦 linux 五種io模型 詳解 linux下五種io模型 關於select poll epoll詳細介紹 分析 select poll epoll 推薦 linux 下i o多路復用區別與優缺點 select poll epoll區別 附 linux多程序程式設計中...