數(shù)據(jù)類型相關(guān)問(wèn)題
關(guān)于JavaScript
JavaScript是一種動(dòng)態(tài)弱類型語(yǔ)言掸绞。
動(dòng)態(tài)語(yǔ)言:只有當(dāng)代碼運(yùn)行時(shí)才會(huì)去檢查變量類型,即在聲明變量時(shí)不用指定數(shù)據(jù)類型烫幕。
弱類型語(yǔ)言:變量被賦值時(shí)不需要檢查數(shù)據(jù)類型敞映,即該變量被賦予什么類型的值,該變量就是什么類型捷犹。
- JavaScript有幾種數(shù)據(jù)類型
JavaScript擁有6中數(shù)據(jù)類型,分別是:
1.數(shù)值(Number)孩哑,整數(shù)或者浮點(diǎn)數(shù)翠桦;
2.字符串(String),'a','A','hello world!';
3.布爾值(boolean), True 或者 False丛晌;
4.null斗幼,表示空
5.undefined, 表示不存在
6.對(duì)象(object),一些數(shù)值的集合(我更愿意稱之為字典)
2.NaN是什么意思谋逻?
NaN(not a number桐经,非數(shù))屬于Number數(shù)據(jù)類型,表示不可表示的值气堕,
比如 Number/String 這樣的值無(wú)法表示畔咧,那么用NaN表示。主要出現(xiàn)在
字符串解析成數(shù)字解析錯(cuò)誤的情況下梅桩。
并且NaN不等于任何數(shù)拜隧,與他自己也不相等
3.null和undefined的區(qū)別?
null:表示不存在
undefined:表示空
個(gè)人理解:其實(shí)這兩者都表示不存在犀呼,但是null更高一級(jí)薇组,undefined表示值不存在,
null直接表示對(duì)象不存在宋光,即沒(méi)這塊內(nèi)存地址。
區(qū)別:
1.typeOf(null) 返回 object, typeOf(undefined) 返回undefined
2.Number(null) 返回 0逛漫,Number(undefined) 返回 NaN
4.JavaScript有幾種方法判斷數(shù)據(jù)類型?
1.typeOf()
2.instanceof()
3.Object.prototype.toString()
5.為什么typeOf(null)為obj赘艳?
因?yàn)樵贘avaScript剛發(fā)布的時(shí)候null是object類型中的一個(gè)值,后來(lái)null獨(dú)立出來(lái)了枷踏,
但是為了兼容以前的代碼掰曾,這里也就沒(méi)有修改。
6.布爾值的使用場(chǎng)景掏熬?
在判斷語(yǔ)句中用于程序流程控制
7.JavaScript最多能處理多少位的十進(jìn)制數(shù)字秒梅?
在JavaScript中所有數(shù)字都是由64位浮點(diǎn)數(shù)表示,第1位表示正負(fù),第2至12位表示指數(shù)漱办,
第13至64位(52位)表示的是小數(shù)部分婉烟,表示該數(shù)字的精度。
但是在JavaScript默認(rèn)該數(shù)字整數(shù)位為1洞辣,所以其實(shí)是有53位數(shù)字來(lái)表示精度昙衅。
所以JavaScript能表示 -2^53 ~ 2^53之間的數(shù)字。
即16位十進(jìn)制數(shù)字著瓶,所以用JavaScript來(lái)處理15位十進(jìn)制數(shù)字是安全的啼县。
至于大于該范圍的數(shù)字會(huì)變成0.
8.JavaScript中+0和-0的區(qū)別沸久?
在JavaScript中+0和-0都被當(dāng)做一個(gè)正常的0來(lái)使用卷胯,唯一不同的是當(dāng)做分母時(shí)威酒,
1/(-0)返回-infinity兼搏,1/(+0)返回+infinity
9.parseInt()將字符串轉(zhuǎn)成整數(shù)時(shí)的過(guò)程?
parseInt()會(huì)逐位將字符串轉(zhuǎn)乘整數(shù)裳朋,直到某一位無(wú)法轉(zhuǎn)換就停止吓著。
并且可以接受兩個(gè)參數(shù)绑莺,第二個(gè)參數(shù)表示轉(zhuǎn)換的進(jìn)制。
10.isNaN()的使用有哪些雷區(qū)诫肠?
isNaN(NaN) 為 true欺缘,isNaN('hellow') 也為true,所以isNaN返回true不一定是傳入的是NaN丧鸯,
而是可能傳入了一個(gè)無(wú)法被轉(zhuǎn)成數(shù)字的字符串嫩絮。
11.Base64編碼的使用場(chǎng)景?
Base64的目的是將任何字符轉(zhuǎn)化成可打印字符蜂怎,為的是程序中不出現(xiàn)特殊字符置尔,
使用場(chǎng)景有要以文本格式傳遞二進(jìn)制數(shù)值時(shí)可以使用Base64編碼。
12.JavaScript的原生Base64方法有哪些篮愉?
btoa()將任意值轉(zhuǎn)成base64編碼,atob()將任意base64轉(zhuǎn)成原來(lái)的碼猪勇。
13.引用原始數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別颠蕴?
如果兩個(gè)變量同時(shí)引用了一個(gè)原始數(shù)據(jù)類型犀被,那么這兩個(gè)變量之間是copy關(guān)系,
不相互影響寡键,如果改變其中一個(gè)變量的值不會(huì)影響另一個(gè)變量的值西轩。
但是如果兩個(gè)變量同時(shí)引用了一個(gè)對(duì)象,那么此時(shí)可以把兩個(gè)變量看成兩個(gè)指針马僻,
同時(shí)指向一塊內(nèi)存地址注服,所以修改一個(gè)變量的值會(huì)影響到另一個(gè)變量的值。
14.JavaScript的對(duì)象中女淑,哪些屬性不能被刪除可很?
1.對(duì)象不存在額屬性不能被刪除凰浮;
2.對(duì)象繼承的屬性或者方法不能被刪除袜茧。
15.in和hasOwnProperty方法的區(qū)別?
in雖然能判斷對(duì)象是否有該屬性或者方法纳鼎,但是不能判斷是繼承的還是對(duì)象其本身的,
hasOwnProperty()可以判斷對(duì)象本身是否存在該屬性或者方法劝贸。