在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>java源碼下載>

javascript 函數聲明的優勢分析

大小:1.98 MB 人氣: 2017-09-30 需要積分:1

  我對箭頭函數絕對是真愛,但要聲明一個頂級函數時,我仍用“土氣”的函數聲明。

  為什么呢?“Uncle Bob” Martin 是這么說的:

  花1小時寫代碼,就要花10小時檢查代碼。查找漏洞都成了寫代碼的一部分了,這個差距太懸殊。就算寫代碼多費點時間,代碼也要簡單易懂?!?Robert C. Martin《Clean Code: A Handbook of Agile Software Craftsmanship》

  相比函數表達式,函數聲明有兩大優勢:

  1

  目的明了

  每天看上千行代碼,快速了解程序員的目的非常重要。

  看看這行代碼:

  const maxNumberOfItemsInCart = 。。.;

  讀完了還是不知道這省略符號是函數還是其他什么值。它可能是:

  const maxNumberOfItemsInCart = 100;

  也可能是:

  const maxNumberOfItemsInCart = (statusPoints) =》 statusPoints * 10;

  如果使用函數聲明就沒有這個麻煩了。

  請看:

  const maxNumberOfItemsInCart = 100;

  對比:

  function maxNumberOfItemsInCart(statusPoints) {

  return statusPoints * 10;

  }

  從一開始目的就很明了。

  不過,如果你的代碼編輯器可以用顏色區分代碼,或者你在用一個 Speed Reader,就當我什么都沒說。

  你們肯定在暗自贊嘆函數聲明既簡潔又迷人吧。

  實際上,僅這一個原因還不足以服人,還有另外一個原因。

  2

  Order of declaration == order of execution

  執行順序和聲明順序一致時,是最理想的。如果能做到執行時才聲明使用 const(常數)關鍵字的值就很厲害了。

  

  都退后,我要開始裝逼了

  Fair warning:接下來我要放大招了——下文“行話”連篇,但你只要明白在聲明之前不能使用常數就好。

  以下的代碼會拋出一個錯誤:

  sayHelloTo(‘Bill’);

  const sayHelloTo = (name) =》 `Hello ${name}`;

  這是因為,當 Java 引擎閱讀代碼時,會綁定(bind)而非初始化sayHelloTo。

  Java 中所有聲明都是提升(hoist)和綁定的,但初始化的方式各自不同。換言之,Java 提升了sayHelloTo的聲明——先閱讀,再置其于頂層,然后創建空間來儲存其值——但在執行之前不會聲明sayHelloTo。

  sayHelloTo綁定和初始化的時間差叫作“暫存死區(TDZ)”。

  如果在瀏覽器里直接使用ES2015(而不是借助Babel等使用ES5),以下的代碼也會拋出錯誤:

  if(thing) {

  console.log(thing);

  }

  const thing = ‘awesome thing’;

  以上的代碼是用var而非const寫的,不會拋出錯誤,因為變量被綁定時會初始化為undefined,而常數被綁定時完全不會被初始化。有點偏題了……

  函數聲明不會有此類 TDZ 問題。如下文,代碼可以是:

  sayHelloTo(‘Bill’);

  function sayHelloTo(name) {

  return `Hello ${name}`;

  }

  這是因為函數聲明在被綁定時就被初始化了——這是在執行代碼之前。

  所以不論何時進行函數聲明,代碼開始執行時,語法都是符合其作用域的。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 天堂社区在线视频 | 免费看很黄很色裸乳视频 | 在线观看视频播放 | 亚州 色 图 综合 | 久久国产精品久久久久久 | 天天做天天爱天天一爽一毛片 | 成人夜色视频网站在线观看 | 高清色本在线www | 亚洲五月综合缴情婷婷 | 天堂在线bt | 欧亚精品卡一卡二卡三 | 国语自产拍在线观看7m | 美女一级免费毛片 | 四虎国产一区二区三区 | 亚洲一区二区三区精品视频 | 色五月激情五月 | 人人爽天天爽夜夜爽曰 | 特级aaa毛片 | 韩国理伦片在线观看2828 | 爱逼综合 | a级黄色毛片三个搞一 | 99se亚洲综合色区 | 人人做人人爽人人爱秋霞影视 | 亚洲一级毛片在线观播放 | 亚洲一本高清 | 欧美一级片在线免费观看 | 日本污视频 | 欧美黄色性 | 网友自拍区一区二区三区 | 视频在线观看一区 | 99插插| 好大好硬好深好爽想要免费视频 | 综合啪啪 | 久久精品99无色码中文字幕 | 激情网婷婷 | 毛片免费高清免费 | 亚洲国内精品 | 黄色片香蕉视频 | 91网站免费在线观看 | 久久福利网 | 亚洲一级毛片中文字幕 |