:JS 中有趣的事實(shí) JS 中有趣的事實(shí)
大家都說(shuō)簡(jiǎn)歷沒(méi)項(xiàng)目寫(xiě),我就幫大家找了一個(gè)項(xiàng)目,還附贈(zèng)【搭建教程】。
使用 JS 有很多有趣的地方。盡管工程師們每天都在與之打交道,但仍有一些語(yǔ)言沒(méi)有被開(kāi)發(fā)出來(lái)。本廣將介紹一些你可能想不到的JS特性。
NaN 是一個(gè) number 類型
NaN
是一個(gè) number
類型。 而且,NaN
不等于它自己。 實(shí)際上NaN
不等于任何東西,驗(yàn)證一個(gè)變量是否是 NaN
可以使用 isNaN()
方法來(lái)判斷。
csharp復(fù)制代碼> typeof(NaN) "number" > NaN === NaN false
null 是一個(gè)對(duì)象
null
是一個(gè)對(duì)象。 聽(tīng)起來(lái)奇怪! 對(duì)? 但這是事實(shí)。
csharp復(fù)制代碼> typeof(null) "object"
在這種情況下,null
表示沒(méi)有值。因此,null
不應(yīng)該是Object
的實(shí)例。
javascript復(fù)制代碼> null instanceof Object false
undefined 可以被定義
undefined
不是 JS 中的保留關(guān)鍵字, 你可以為其指定值也不會(huì)報(bào)錯(cuò),如果聲明一個(gè)變量沒(méi)有賦值,默認(rèn)為 undefined
ini復(fù)制代碼> var some_var; undefined > some_var == undefined true > undefined = 'i am undefined'
0.1 + 0.2 不等于 to 0.3
在JavaScript中,0.1 +0.2 == 0.3
返回false
。 事實(shí)是,javascript 將浮點(diǎn)數(shù)存儲(chǔ)為二進(jìn)制。
ini復(fù)制代碼> 0.1 + 0.2 0.30000000000000004 > 0.1 + 0.2 == 0.3 false
Math.max() 比 Math.min() 小
Math.max() > Math.min()
返回false
的事實(shí)看起來(lái)是錯(cuò)誤的,但實(shí)際上它是正確的。
如果沒(méi)有參數(shù)傳給min()
或max()
,那么它將返回以下值。
javascript復(fù)制代碼> Math.max() -Infinity > Math.min() Infinity
018 - 045 = -19
在JavaScript中,前綴0
會(huì)把任何數(shù)字轉(zhuǎn)換成八進(jìn)制。但是,八進(jìn)制中不使用8
,任何包含8
的數(shù)字都將被無(wú)聲地轉(zhuǎn)換為常規(guī)的十進(jìn)制數(shù)字。
diff復(fù)制代碼> 018 - 045 -19
因此,018-019
實(shí)際上等于十進(jìn)制表達(dá)式18-37
,因?yàn)?code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;font-size: 0.87em;border-radius: 2px;overflow-x: auto;background-color: rgb(255, 245, 245);color: rgb(255, 80, 44);padding: 0.065em 0.4em">045是八進(jìn)制,但018
是十進(jìn)制。
函數(shù)可以自執(zhí)行
只需創(chuàng)建一個(gè)函數(shù),并在調(diào)用其他函數(shù)時(shí)立即調(diào)用它,并使用 ()
語(yǔ)法
lua復(fù)制代碼> (function() { console.log('I am self executing'); })(); I am self executing
括號(hào)的位置問(wèn)題
javascript復(fù)制代碼`return` 語(yǔ)句后面沒(méi)有東西的時(shí)候它什么都不返回。 實(shí)際上,JS 后面 `return` 添加一個(gè) `;`。 > function foo() { return { foo: 'bar' } } > foo(); undefined > function foo() { return { foo: 'bar' } } > foo(); {foo: "bar"}
沒(méi)有整數(shù)數(shù)據(jù)類型
在 JS 中,沒(méi)有int
(整數(shù))數(shù)據(jù)類型。 所有數(shù)字均為 Number
類型。 實(shí)際上它將int
數(shù)的浮點(diǎn)值存儲(chǔ)在內(nèi)存上。
sort() 函數(shù)自動(dòng)類型轉(zhuǎn)換
sort()
函數(shù)自動(dòng)將值轉(zhuǎn)換為字符串,這就會(huì)導(dǎo)致奇怪的事情發(fā)生。
scss復(fù)制代碼> [1,5,20,10].sort() (4) [1, 10, 20, 5]
但是,它可以通過(guò)比較來(lái)解決:
css復(fù)制代碼> [1,5,20,10].sort(function(a, b){return a - b}); (4) [1, 5, 10, 20]
數(shù)組和對(duì)象的和
css復(fù)制代碼> !+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![] 9 > {} + [] 0 > [] + {} "[object Object]" > [] + [] "" > {} + {} "[object Object][object Object]" > {} + [] == [] + {} true
交流
該文章在 2024/6/15 17:29:57 編輯過(guò)