原文:dev.to/shafikshaon…javascript
譯者:前端小智html
爲了保證的可讀性,本文采用意譯而非直譯。前端
阿里雲最近在作活動,低至2折,有興趣能夠看看:promotion.aliyun.com/ntms/yunpar…java
使用 JS 有不少有趣的地方。儘管工程師們天天都在與之打交道,但仍有一些語言沒有被開發出來。本廣將介紹一些你可能想不到的JS特性。git
NaN
是一個 number
類型。 並且,NaN
不等於它本身。 實際上NaN
不等於任何東西,驗證一個變量是不是 NaN
可使用 isNaN()
方法來判斷。github
> typeof(NaN)
"number"
> NaN === NaN
false
複製代碼
null
是一個對象。 聽起來奇怪! 對? 但這是事實。數組
> typeof(null)
"object"
複製代碼
在這種狀況下,null
表示沒有值。所以,null
不該該是Object
的實例。函數
> null instanceof Object
false
複製代碼
undefined
不是 JS 中的保留關鍵字, 你能夠爲其指定值也不會報錯,若是聲明一個變量沒有賦值,默認爲 undefined
學習
> 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-019
實際上等於十進制表達式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, 5, 10, 20]
複製代碼
> !+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]
9
> {} + []
0
> [] + {}
"[object Object]"
> [] + []
""
> {} + {}
"[object Object][object Object]"
> {} + [] == [] + {}
true
複製代碼
爲了回饋讀者,《大遷世界》不按期舉行(每月一到三次),現金抽獎活動,保底200,外加用戶讚揚,但願你能成爲大遷世界的小錦鯉,快來試試吧
乾貨系列文章彙總以下,以爲不錯點個Star,歡迎 加羣 互相學習。
我是小智,公衆號「大遷世界」做者,對前端技術保持學習愛好者。我會常常分享本身所學所看的乾貨,在進階的路上,共勉!
關注公衆號,後臺回覆福利,便可看到福利,你懂的。
每次整理文章,通常都到2點才睡覺,一週4次左右,挺苦的,還望支持,給點鼓勵