「知識點」JavaScript 中11個有趣的事實


「知識點」JavaScript 中11個有趣的事實


1 NaN 是一個 number 類型

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

<code>> typeof(NaN)"number"> NaN === NaNfalse/<code>


2 null 是一個對象

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

<code>> typeof(null)"object"/<code>

在這種情況下,null表示沒有值。因此,null不應該是Object的實例。

<code>> null instanceof Objectfalse    /<code>

我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定製課程,去年我花了一個月整理了一份最適合2019年學習的web前端學習乾貨,各種框架都有整理,送給每一位前端小夥伴,想要獲取的可以關注我的頭條號並在後臺私信我:前端,即可免費獲取。

3 undefined 可以被定義

undefined不是 JS 中的保留關鍵字, 你可以為其指定值也不會報錯,如果聲明一個變量沒有賦值,默認為undefined

<code>> var some_var;undefined> some_var == undefinedtrue> undefined = 'i am undefined'   /<code>


4 0.1 + 0.2 不等於 to 0.3

在JavaScript中,0.1 +0.2 == 0.3返回false。 事實是,javascript 將浮點數存儲為二進制。

<code>> 0.1 + 0.20.30000000000000004> 0.1 + 0.2 == 0.3false /<code>


「知識點」JavaScript 中11個有趣的事實


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

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

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

<code>> Math.max()-Infinity> Math.min()Infinity    /<code>


6 018 - 045 = -19

在JavaScript中,前綴0會把任何數字轉換成八進制。但是,八進制中不使用8,任何包含8的數字都將被無聲地轉換為常規的十進制數字。

<code>> 018 - 045-19   /<code>

因此,018-019實際上等於十進制表達式18-37,因為045是八進制,但018是十進制。


7 函數可以自執行

只需創建一個函數,並在調用其他函數時立即調用它,並使用()語法

<code>> (function()  { console.log('I am self executing');  })();I am self executing    /<code>


8 括號的位置問題

<code>`return` 語句後面沒有東西的時候它什麼都不返回。 實際上,JS 後面 `return` 添加一個 `;`。> function foo() {   return   {      foo: 'bar'   }}> foo(); undefined> function foo() {   return {      foo: 'bar'   }}> foo(); {foo: "bar"}/<code>


9 沒有整數數據類型

在 JS 中,沒有int(整數)數據類型。 所有數字均為Number類型。 實際上它將int數的浮點值存儲在內存上。


10 sort() 函數自動類型轉換

sort()函數自動將值轉換為字符串,這就會導致奇怪的事情發生。

<code>> [1,5,20,10].sort()(4) [1, 10, 20, 5]/<code>

但是,它可以通過比較來解決:

<code>> [1,5,20,10].sort(function(a, b){return a - b});(4) [1, 5, 10, 20]/<code>


11 數組和對象的和

<code>> !+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]9> {} + []0> [] + {}"[object Object]"> [] + []""> {} + {}"[object Object][object Object]"> {} + [] == [] + {}true/<code>
<code>> !+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]9> {} + []0> [] + {}"[object Object]"> [] + []""> {} + {}"[object Object][object Object]"> {} + [] == [] + {}true/<code>
「知識點」JavaScript 中11個有趣的事實

原文鏈接:https://zhuanlan.zhihu.com/p/75428509


分享到:


相關文章: