我所不知的JS
第一時間關注程序猿(媛)身邊的故事
幾天前在閱讀 MDN 文檔時我發現了一些我從來不知道的 JS 特性和 API。 下面是一份簡短的清單, 無論有用不有用——學習 JS 的道路似乎是沒有盡頭的。
標籤語句
在 JS 中,你可以對 for 循環和代碼塊起名字... 誰知道呢(顯然我不知道)! 稍後你可以在for 循環中對該代碼使用 break 或 continue 語句, 同時在代碼塊中也可以使用 break。
這是一個對代碼塊命名的例子,在代碼塊中只能使用
"void" 操作符
這之前我一直以為我掌握了所有的操作符,直到我看到了這個 從 1996 年就有.的操作符。 所有瀏覽器都支持也非常的好理解, 用 MDN 的話:
void 操作符執行表達式之後同時返回 undefined
這樣可以寫出立即執行函數的另一種形式:
對 void 的使用需要注意的是,表達式的執行結果是 空(undefined)!
你可以將 async 與 void 相結合, 即可作為代碼中的非同步入口點:
逗號操作符
在閱讀完逗號表達式之後, 我並沒有感到我完全理解了它是如何工作的。 引用 MDN 的話:
逗號操作符執行其所有的操作數(從左到右)並返回最後一個操作數的結果。
· 與 條件操作符 一起使用
逗號操作符的最後一個結果總是作為條件操作符的結果。 所以你可以在這之前放入任意數量的表達式, 在下面的例子中,我在返回的布爾值之前都放了一句 console log。
國際化 API
在當前國際化要做好很難, 幸運的是,在大部門瀏覽器中都有 較好的 API 支持。 其中我所喜歡的其中一項就是日期格式化, 看下面的例子。
管道操作符
在撰寫本篇文章時,此功能僅在 Firefox 58+ 使用參數開啟, 然而在 Babel 中已經有一個針對此操作符提案的 插件了。 看起來非常好,我很喜歡!
值得注意的
· 原子性
原子操作帶來了可預測的讀寫結果,特別是當數據在多個線程中共享時,下一個操作會等待其他操作完成之後才會被執行。 對於主線程和其他 WebWorker 之間保持數據同步來說非常有用。
我很喜歡其他編程語言中的原子特性,例如 Java 中。 我覺得在之後使用 WebWorker 將事務從主線程中轉移出來之後會使用得更多。
· setTimeout() 參數
在了解到這個功能之後節省了 .bind() 的使用,這個特性從一開始就有了。
· HTMLElement.dataset
在之前我在 HTML 元素上使用自定義數據屬性 data-*,但我渾然不知有 API 能夠輕鬆的做讀取。 拋開一些特殊的命名限制(看標題鏈接),其基本上就是橫線隔開在 JS 中使用時則用駝峰規則。 所以屬性 data-birth-planet 在 JS 中會變成 birthPlanet。
讀取:
結 語
希望你能在JS中像我一樣發現新東西。Happy New 2018!
本文轉載自:眾成翻譯
譯者:NimitzDEV
翻譯鏈接:http://zcfy.cc/article/js-things-i-never-knew-existed
- THE END -
※明明可以靠顏值 卻用代碼把人類送上了月球的女人——Margaret Hamilton
TAG:程序人生 |