阿里雲最近在作活動,低至2折,有興趣能夠看看:
https://promotion.aliyun.com/...
爲了保證的可讀性,本文采用意譯而非直譯。javascript
使用 JS 有不少有趣的地方。儘管工程師們天天都在與之打交道,但仍有一些語言沒有被開發出來。本廣將介紹一些你可能想不到的JS特性。html
NaN
是一個 number
類型。 並且,NaN
不等於它本身。 實際上NaN
不等於任何東西,驗證一個變量是不是 NaN
能夠使用 isNaN()
方法來判斷。前端
> typeof(NaN) "number" > NaN === NaN false
null
是一個對象。 聽起來奇怪! 對? 但這是事實。java
> typeof(null) "object"
在這種狀況下,null
表示沒有值。所以,null
不該該是Object
的實例。git
> null instanceof Object false
undefined
不是 JS 中的保留關鍵字, 你能夠爲其指定值也不會報錯,若是聲明一個變量沒有賦值,默認爲 undefined
github
> var some_var; undefined > some_var == undefined true > undefined = 'i am undefined'
在JavaScript中,0.1 +0.2 == 0.3
返回false
。 事實是,javascript 將浮點數存儲爲二進制。數組
> 0.1 + 0.2 0.30000000000000004 > 0.1 + 0.2 == 0.3 false
Math.max() > Math.min()
返回false
的事實看起來是錯誤的,但實際上它是正確的。函數
若是沒有參數傳給min()
或max()
,那麼它將返回如下值。學習
> Math.max() -Infinity > Math.min() Infinity
在JavaScript中,前綴0
會把任何數字轉換成八進制。可是,八進制中不使用8
,任何包含8
的數字都將被無聲地轉換爲常規的十進制數字。阿里雲
> 018 - 045 -19
所以,018-017
實際上等於十進制表達式18-37
,由於045
是八進制,但018
是十進制。
只需建立一個函數,並在調用其餘函數時當即調用它,並使用 ()
語法
> (function() { console.log('I am self executing'); })(); I am self executing
`return` 語句後面沒有東西的時候它什麼都不返回。 實際上,JS 後面 `return` 添加一個 `;`。 > function foo() { return { foo: 'bar' } } > foo(); undefined > function foo() { return { foo: 'bar' } } > foo(); {foo: "bar"}
在 JS 中,沒有int
(整數)數據類型。 全部數字均爲 Number
類型。 實際上它將int
數的浮點值存儲在內存上。
sort()
函數自動將值轉換爲字符串,這就會致使奇怪的事情發生。
> [1,5,20,10].sort() (4) [1, 10, 20, 5]
可是,它能夠經過比較來解決:
> [1,5,20,10].sort(function(a, b){return a - b}); (4) [1, 10, 20, 5]
> !+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![] 9 > {} + [] 0 > [] + {} "[object Object]" > [] + [] "" > {} + {} "[object Object][object Object]" > {} + [] == [] + {} true
乾貨系列文章彙總以下,以爲不錯點個Star,歡迎 加羣 互相學習。
https://github.com/qq44924588...
我是小智,公衆號「大遷世界」做者,對前端技術保持學習愛好者。我會常常分享本身所學所看的乾貨,在進階的路上,共勉!
關注公衆號,後臺回覆福利,便可看到福利,你懂的。