前端概念可視化


前言

一句老話說的好:一圖勝千言。這句話對學前端也適用,有時候,一個demo被一大堆文字有用的多。下面我就給大家總結幾個。由於文中引用的部分項目僅支持http,下面的iframe中如果出現空白,請移步本文的http地址查看👉http://www.cnblogs.com/imgss/p/10583107.html ,或者直接點擊給出的原文鏈接。

防抖/節流

將鼠標在灰色方塊中移動,可以觀察正常觸發,防抖(debounce)和節流(throttle)后繪制出的圖像的區別。原項目地址

從圖中可以看出,防抖的作用是,在若干秒后如果不再有事件(如滾動,mousemove等)發生,就觸發處理函數,如果在這期間又發生了新的事件,則重新計時;節流則是每隔若干秒就觸發一次,只是將原來的高頻率降低了。

'=='是怎么計算的

下面的demo給出了當使用 ==時,js引擎是如何對兩邊的值進行隱式轉換,最終得出一個true或者false的,原文鏈接

規則:以 x==y 為例子

  1. 如果x和y的類型相同
    1.a. 返回 x === y的結果.
  2. 如果x是 null 而且y 是 undefined, 返回 true
  3. 如果 x 是 undefined 而 y 是 null, 返回 true
  4. 如果 x 是 number 而 y 是 string, 將 y 轉換成 number 再比較.
  5. 如果 x 是 string 而 y 是 number, 將 x 轉換成 number 再比較.
  6. 如果 x 是 布爾值, 將 x 轉換成 number 再比較.
  7. 如果 y 是 布爾值, 將 y 轉換成 number 再比較.
  8. 如果 x 是 number,string,symbol三種類型之一, typeof y是 object, 將y轉換成原始類型再比較.
  9. 如果 y 是 number,string,symbol三種類型之一, typeof x是 object, 將x轉換成原始類型再比較.
  10. 返回 false.

ease-in,ease-out,cubic-bezier

無論是css還是js動畫庫,繞不開的一個概念就是緩動函數。linear,ease-in,ease-out分別會對動畫產生什么效果?下面這個網站將緩動函數之間的區別可視化。

GreenSock提供了更復雜的緩動函數及可視化,地址:https://greensock.com/ease-visualizer

bezier曲線

二階,三階貝塞爾曲線的區別是什么,控制點的作用是什么?可以把玩一下下面這個demo,給定3個及以上控制點,生成你想要的曲線。原文鏈接

使用方法也很簡單,首先點擊3個及以上的點,然后點擊 繪制 即可看到生成bezier曲線的動畫。

進階閱讀:A Primer on Bézier Curves

svg中的path -- m,h,v,l,z,q,t,c,s

svg <path>里的那些一個字母的命令看着頭昏腦漲?M是啥,L又是啥?下面這個項目來拯救你。地址

配合張鑫旭大神這篇文章食用更佳。

函數調用棧

當js引擎執行一個函數時,函數調用棧是什么?js從主函數開始,如果函數中又有函數被調用,這個函數入棧,調用結束后出棧。

1_E3zTWtEOiDWw7d0n7Vp-mA.gif

astExplorer

babel是如何把es6,轉換成es5的,vue是怎么把模板轉換成render函數的,AST在其中起着重要作用。https://astexplorer.net/

算法可視化

https://algorithm-visualizer.org/
大家還見過哪些有助於理解前端概念的網站呢,歡迎在評論區留言哦🦉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM