請說一下js有哪些數(shù)據(jù)類型?
這是一道非常常見的面試題,但事實上可能區(qū)分出面試官和候選人的水平。
你可能會回答基礎(chǔ)數(shù)據(jù)類型是string、boolean、number、null、undefined,引用類型是object。有些同學還回答不全,趕緊檢討一下。
水平差點的面試官或者要求低點的面試管這里可能就結(jié)束了。下一題。
想刁難你一下的面試官就開始了。
es6的Symbol知不知道,你如果說知道,他可能開始考你Symbol的問題了。
可能還會問BigInt知不知道。
從object深挖可能會問你object有哪些,那你就得回答function、array、data、regexp、error。
數(shù)據(jù)類型回答全之后,大多數(shù)公司一般會接著追問
請說一下如何判斷數(shù)據(jù)類型
你可能會說typeof、instanceof。
然后接著說完typeof可以判斷哪些number、string、boolean、undefined、function、object。然后instanceof是看看在不在原型鏈。
接下來面試官開始問原型鏈。
說一下原型鏈
只會背概念非常容易被問倒,建議看一下這篇http://www.itdecent.cn/p/686b61c4a43d
判斷數(shù)組的方式你還可能會說Object.prototype.toString.call。
你以為到這里就結(jié)束了。
我就是在這里被某公司一面問暈了,因為平時開發(fā)用bind、call、applay非常少。干嘛要在這里用call,不知道,如果Object.prototype.toString.call沒有真的理解,可能還會背錯。
你如果只刷面經(jīng)而不真的去深入學習,你壓根就不知道call在這里的作用:傳參。
jQuery源碼很經(jīng)常喜歡用某方法.call,比如Array.indexOf.call()
如果是這么寫
function indexOf(arr,str){
return arr.indexOf(str);
}
那么
indexOf({},'')
就會報錯
如果是
function indexOf(arr,str){
return Array.indexOf.call(arr,str);
}
indexOf({},'')
就會給你返回-1,而不會報錯,保證代碼的平穩(wěn)運行下一條。
引用11年有人在stackOverflow對jQuery源碼為什么要return indexOf.call( array, elem )這么寫的提問
https://stackoverflow.com/questions/6569344/indexof-call-vs-array-indexof-in-jquerys-source
底下有人回答到:如果直接.方法,而你傳進去的array原型鏈上沒有此方法,就會報錯。

忙去吧