JavaScript類型:
- JavaScript的基本類型:
傳送門 - JavaScript的原始類型:
傳送門 - 原始類型和復(fù)雜類型的區(qū)別:
首先說(shuō)一下類型和數(shù)據(jù)結(jié)構(gòu)的關(guān)系拓萌,類型是讓編譯器(或者解釋器)識(shí)別的,作用是讓編譯器明白當(dāng)前的指針(或者是變量)的容量妨蛹,這時(shí)候cpu如果需要使用該變量時(shí)才知道該變量(或者是指針)代表多少內(nèi)存單元。
那么JavaScript是如何判斷類型的呢坚芜?
關(guān)于Object(很多人認(rèn)為這個(gè)是復(fù)雜類型)般哼,明確的說(shuō)object不是類型,是數(shù)據(jù)結(jié)構(gòu)寄摆。舉個(gè)例子,你可以動(dòng)態(tài)的訪問(wèn)屬性如a[b] (a,b均為變量,這里我感覺(jué)屬性訪問(wèn)器反而是語(yǔ)法糖)修赞。在其他編譯型語(yǔ)言中對(duì)象的屬性是無(wú)法動(dòng)態(tài)訪問(wèn)的(貌似Java的反射可以婶恼,不過(guò)這也是編譯器將類型名放入對(duì)象的內(nèi)存中),他的底層相當(dāng)于用malloc開辟一段空間柏副,里面存儲(chǔ)的key就是字符串(好像也可以是symbol勾邦,為了避免沖突?)割择,而value可以是指針(算上null和string吧眷篇,畢竟string中實(shí)際上放的還是指針,只是某個(gè)連續(xù)的字符串荔泳。)蕉饼、number,boolean(感覺(jué)就是0和1),
類型推導(dǎo)傳送門
typeof和instanceof的作用和區(qū)別
typeof 作用虐杯,用于判斷值為什么類型,其返回結(jié)果為number昧港、string擎椰、boolean、object创肥、undefined达舒、function(以上均為字符串)。instanceof 用于判斷一個(gè)變量是否某個(gè)構(gòu)造函數(shù)的實(shí)例(或者是es6中的class)的實(shí)例叹侄,其返回一個(gè)boolean值巩搏,true或false,其實(shí)說(shuō)白了就是判斷其原型鏈上的constructor指針是否相等。
如何判斷一個(gè)變量是否是數(shù)字趾代、字符串塔猾、布爾、函數(shù)
var a稽坤;
typeof(a)==='number' 判斷是否為數(shù)字,返回true糯俗,即為數(shù)字
typeof(a)==='string' 判斷是否為字符串
typeof(a)==='boolean' 判斷是否為字符串
typeof(a)==='function' 判斷是否為函數(shù)尿褪。
NaN是什么? 有什么特別之處?
NAN 意思是不是一個(gè)數(shù)字,NaN===NaN 為false得湘,和其他任何值都不相等杖玲,因?yàn)閚an不是具體的,不知道自己代表什么淘正,所以沒(méi)法和其他任何值相等摆马。
break與continue有什么區(qū)別
break;跳出循環(huán)鸿吆,強(qiáng)制退出循環(huán)體囤采,執(zhí)行循環(huán)后面的代碼。continue:退出本次循環(huán)惩淳,繼續(xù)執(zhí)行下次循環(huán)蕉毯。
void 0 和 undefined在使用場(chǎng)景上有什么區(qū)別
void 會(huì)執(zhí)行后面的表達(dá)式并返回 undefined,有時(shí)undefined是可以被賦值的思犁,比如在函數(shù)中代虾,這時(shí)就不能用undefined來(lái)進(jìn)行判斷了。所以用void 0返回undefined來(lái)進(jìn)行判斷激蹲。