前言前端
最近在學習的過程當中發現了我以前不曾瞭解過的一些特性,發現有些頗有趣而且在處理一些問題的時候能夠給我一個新的思路。web
這裏我將這些特性介紹給你們。性能
4 個有趣的 JS 特性學習
利用 a 標籤解析 URL優化
有的時候咱們須要從一個 URL 中提取域名,查詢關鍵字,變量參數值等,通常咱們會本身去解析 URL 來獲取這些內容。但是你或許不知道還有更簡單的方法。server
即建立一個 a 標籤將須要解析的 URL 賦值給 a 的 href 屬性,而後咱們就能很方便的拿到這些內容。代碼以下:blog
標記語句(label)教程
有的時候咱們會寫雙重 for 循環作一些數據處理,咱們有的時候但願知足條件的時候就直接跳出循環。以避免浪費沒必要要資源。ip
這個時候咱們就能夠用 label 和 continue/break 配合使用資源
:
相信你從上面兩段代碼的輸出能夠對標記語句有一個瞭解。
void 運算符
void 運算符對給定的表達式進行求值,而後返回 undefined。
因爲void會忽略操做數的值,所以在操做數具備反作用的時候使用void會更加合理。
使用 void 替換 undefined
因爲undefined並非JavaScript的關鍵字,因此咱們在賦值某個變量爲undefined時可能會有點意想不到的結果。
如上代碼咱們可能但願賦值爲undefined,但卻獲得了10這個莫名其妙的狀況。因此咱們可使用使用void替換undefined。
這也是爲何咱們在不少源碼中都能看到使用void替換undefined。
IntersectionObserver 是什麼?
IntersectionObserver 能夠用來監聽元素是否進入了設備的可視區域以內,而不須要頻繁的計算來作這個判斷。
因此咱們能夠用這個特性來處理曝光埋點,而不是用getBoundingClientRect().top這種更加損耗性能的方式來處理。
本身是一個五年的全棧工程師,這裏推薦一下個人前端學習交流圈:開始484而後757最後760,裏面都是學習前端的,裙子裏會不按期更新最新的教程和學習方法,有想學習web前端的,或是轉行,或是大學生,還有工做中想提高本身能力的web前端黨歡迎加入,
固然你也能夠用這個 API 來優化滾動吸頂,代碼以下:
但願這 4 個特性能夠對你有所幫助,而後點個贊在走唄。