JS 中有趣的事實

原文:dev.to/shafikshaon…javascript

譯者:前端小智html

爲了保證的可讀性,本文采用意譯而非直譯。前端

阿里雲最近在作活動,低至2折,有興趣能夠看看:promotion.aliyun.com/ntms/yunpar…java


使用 JS 有不少有趣的地方。儘管工程師們天天都在與之打交道,但仍有一些語言沒有被開發出來。本廣將介紹一些你可能想不到的JS特性。git

NaN 是一個 number 類型

NaN是一個 number 類型。 並且,NaN 不等於它本身。 實際上NaN不等於任何東西,驗證一個變量是不是 NaN 可使用 isNaN() 方法來判斷。github

> typeof(NaN)
"number"

> NaN === NaN
false
複製代碼

null 是一個對象

null是一個對象。 聽起來奇怪! 對? 但這是事實。數組

> typeof(null)
"object"
複製代碼

在這種狀況下,null表示沒有值。所以,null不該該是Object的實例。函數

> null instanceof Object
false    
複製代碼

undefined 能夠被定義

undefined不是 JS 中的保留關鍵字, 你能夠爲其指定值也不會報錯,若是聲明一個變量沒有賦值,默認爲 undefined學習

> 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 將浮點數存儲爲二進制。阿里雲

> 0.1 + 0.2
0.30000000000000004
> 0.1 + 0.2 == 0.3
false    
複製代碼

Math.max() 比 Math.min() 小

Math.max() > Math.min()返回false的事實看起來是錯誤的,但實際上它是正確的。

若是沒有參數傳給min()max(),那麼它將返回如下值。

> Math.max()
-Infinity
> Math.min()
Infinity    
複製代碼

018 - 045 = -19

在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() 函數自動類型轉換

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,歡迎 加羣 互相學習。

github.com/qq449245884…

我是小智,公衆號「大遷世界」做者,對前端技術保持學習愛好者。我會常常分享本身所學所看的乾貨,在進階的路上,共勉!

關注公衆號,後臺回覆福利,便可看到福利,你懂的。

每次整理文章,通常都到2點才睡覺,一週4次左右,挺苦的,還望支持,給點鼓勵

相關文章
相關標籤/搜索