奇怪的 Javascript

做者:Jomendez

翻譯:瘋狂的技術宅javascript

原文:http://www.jomendez.com/2020/...html

未經容許嚴禁轉載前端

javascript is weird

個人意思是,對於剛開始使用這種語言和他語言(例如 C++ 或 C#)的開發人員來講,javascript 可能會很奇怪。java

某些語言可能會讓你大吃一驚🤯🤯程序員

在本文中,咱們將看到 5 個例子,並讓你可以在幾分鐘的時間內讀完。面試

數字分隔符

如下面的代碼爲例:express

const number1 = 2_0_0_0;
const number2 = 6_0_0_0;

console.log(number1 + number2);

你認爲結果將是什麼?segmentfault

你能夠把代碼複製粘貼到瀏覽器的控制檯上,也能夠本身在 Codepen 上執行。數組

結果是 8000,可是爲何呢?瀏覽器

下劃線(_)是數字形式文字的數字分隔符。它用於對數字進行分組,這樣能夠使長數字更易於閱讀,例如:

1234567

1_234_567 <-- 因此用分隔符更具備可讀性。

在這篇文章中能夠獲得更多信息(https://2ality.com/2018/02/nu...)。

一些奇怪的類型。

另外一個例子是當你運行代碼 typeof null 時:

typeof null;
// result object

這會使你錯誤地認爲 null 是對象(但並非,它是原始值)。

在這種狀況下,這不只是一件奇怪的事情,並且是語言中的一個沒法糾正的錯誤,由於它會破壞代碼的其餘部分。

這篇文章(https://2ality.com/2013/10/ty...)對其進行了更深刻的解釋。

另外還有...

typeof NaN;
 // result number.

NaN 很奇怪—— 「not a number」?另外一方面,NaN 不等於其自身。

console.log(NaN === NaN);
//evaluates false.

函數

在 javascript 中,函數能夠自行調用其自身 IIFE(當即調用函數表達式),所以你能夠在同一條語句上進行聲明和執行。

(function() { console.log('hello'); })();
//display 'hello'

據我所知,這種規則僅存在於 javascript中。它很是有用,可用於避免從塊內部懸掛變量,防止污染全局環境,並同時容許公有訪問方法,同時保留在函數中定義的變量的私密性。

你能夠在這篇文章中瞭解更多信息(https://blog.mgechev.com/2012...

重置數組

最後,重置數組的最奇怪的方法是,能夠將 length 屬性設置爲 0:arr.length = 0;

const arr = [1,2,3,4,5,6];
console.log(arr);
// displays [1, 2, 3, 4, 5, 6]

arr.length = 0;
console.log(arr);
// displays []

但願你喜歡它,若是你知道其餘特定於 javascript 語言的奇怪的知識,請在評論中分享。 😉


本文首發微信公衆號:前端先鋒

歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章

歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章

歡迎繼續閱讀本專欄其它高贊文章:


相關文章
相關標籤/搜索