:JS 中有趣的事實 JS 中有趣的事實
大家都說簡歷沒項目寫,我就幫大家找了一個項目,還附贈【搭建教程】。
使用 JS 有很多有趣的地方。盡管工程師們每天都在與之打交道,但仍有一些語言沒有被開發出來。本廣將介紹一些你可能想不到的JS特性。
NaN 是一個 number 類型
NaN
是一個 number
類型。 而且,NaN
不等于它自己。 實際上NaN
不等于任何東西,驗證一個變量是否是 NaN
可以使用 isNaN()
方法來判斷。
csharp復制代碼> typeof(NaN) "number" > NaN === NaN false
null 是一個對象
null
是一個對象。 聽起來奇怪! 對? 但這是事實。
csharp復制代碼> typeof(null) "object"
在這種情況下,null
表示沒有值。因此,null
不應該是Object
的實例。
javascript復制代碼> null instanceof Object false
undefined 可以被定義
undefined
不是 JS 中的保留關鍵字, 你可以為其指定值也不會報錯,如果聲明一個變量沒有賦值,默認為 undefined
ini復制代碼> 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
。 事實是,javascript 將浮點數存儲為二進制。
ini復制代碼> 0.1 + 0.2 0.30000000000000004 > 0.1 + 0.2 == 0.3 false
Math.max() 比 Math.min() 小
Math.max() > Math.min()
返回false
的事實看起來是錯誤的,但實際上它是正確的。
如果沒有參數傳給min()
或max()
,那么它將返回以下值。
javascript復制代碼> Math.max() -Infinity > Math.min() Infinity
018 - 045 = -19
在JavaScript中,前綴0
會把任何數字轉換成八進制。但是,八進制中不使用8
,任何包含8
的數字都將被無聲地轉換為常規的十進制數字。
diff復制代碼> 018 - 045 -19
因此,018-019
實際上等于十進制表達式18-37
,因為045
是八進制,但018
是十進制。
函數可以自執行
只需創建一個函數,并在調用其他函數時立即調用它,并使用 ()
語法
lua復制代碼> (function() { console.log('I am self executing'); })(); I am self executing
括號的位置問題
javascript復制代碼`return` 語句后面沒有東西的時候它什么都不返回。 實際上,JS 后面 `return` 添加一個 `;`。 > function foo() { return { foo: 'bar' } } > foo(); undefined > function foo() { return { foo: 'bar' } } > foo(); {foo: "bar"}
沒有整數數據類型
在 JS 中,沒有int
(整數)數據類型。 所有數字均為 Number
類型。 實際上它將int
數的浮點值存儲在內存上。
sort() 函數自動類型轉換
sort()
函數自動將值轉換為字符串,這就會導致奇怪的事情發生。
scss復制代碼> [1,5,20,10].sort() (4) [1, 10, 20, 5]
但是,它可以通過比較來解決:
css復制代碼> [1,5,20,10].sort(function(a, b){return a - b}); (4) [1, 5, 10, 20]
數組和對象的和
css復制代碼> !+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![] 9 > {} + [] 0 > [] + {} "[object Object]" > [] + [] "" > {} + {} "[object Object][object Object]" > {} + [] == [] + {} true
交流
該文章在 2024/6/15 17:29:57 編輯過