色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>java源碼下載>

javascript 函數(shù)聲明的優(yōu)勢(shì)分析

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

  我對(duì)箭頭函數(shù)絕對(duì)是真愛(ài),但要聲明一個(gè)頂級(jí)函數(shù)時(shí),我仍用“土氣”的函數(shù)聲明。

  為什么呢?“Uncle Bob” Martin 是這么說(shuō)的:

  花1小時(shí)寫(xiě)代碼,就要花10小時(shí)檢查代碼。查找漏洞都成了寫(xiě)代碼的一部分了,這個(gè)差距太懸殊。就算寫(xiě)代碼多費(fèi)點(diǎn)時(shí)間,代碼也要簡(jiǎn)單易懂。—— Robert C. Martin《Clean Code: A Handbook of Agile Software Craftsmanship》

  相比函數(shù)表達(dá)式,函數(shù)聲明有兩大優(yōu)勢(shì):

  1

  目的明了

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

  看看這行代碼:

  const maxNumberOfItemsInCart = 。。.;

  讀完了還是不知道這省略符號(hào)是函數(shù)還是其他什么值。它可能是:

  const maxNumberOfItemsInCart = 100;

  也可能是:

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

  如果使用函數(shù)聲明就沒(méi)有這個(gè)麻煩了。

  請(qǐng)看:

  const maxNumberOfItemsInCart = 100;

  對(duì)比:

  function maxNumberOfItemsInCart(statusPoints) {

  return statusPoints * 10;

  }

  從一開(kāi)始目的就很明了。

  不過(guò),如果你的代碼編輯器可以用顏色區(qū)分代碼,或者你在用一個(gè) Speed Reader,就當(dāng)我什么都沒(méi)說(shuō)。

  你們肯定在暗自贊嘆函數(shù)聲明既簡(jiǎn)潔又迷人吧。

  實(shí)際上,僅這一個(gè)原因還不足以服人,還有另外一個(gè)原因。

  2

  Order of declaration == order of execution

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

  

  都退后,我要開(kāi)始裝逼了

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

  以下的代碼會(huì)拋出一個(gè)錯(cuò)誤:

  sayHelloTo(‘Bill’);

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

  這是因?yàn)椋?dāng) Java 引擎閱讀代碼時(shí),會(huì)綁定(bind)而非初始化sayHelloTo。

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

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

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

  if(thing) {

  console.log(thing);

  }

  const thing = ‘a(chǎn)wesome thing’;

  以上的代碼是用var而非const寫(xiě)的,不會(huì)拋出錯(cuò)誤,因?yàn)樽兞勘唤壎〞r(shí)會(huì)初始化為undefined,而常數(shù)被綁定時(shí)完全不會(huì)被初始化。有點(diǎn)偏題了……

  函數(shù)聲明不會(huì)有此類(lèi) TDZ 問(wèn)題。如下文,代碼可以是:

  sayHelloTo(‘Bill’);

  function sayHelloTo(name) {

  return `Hello ${name}`;

  }

  這是因?yàn)楹瘮?shù)聲明在被綁定時(shí)就被初始化了——這是在執(zhí)行代碼之前。

  所以不論何時(shí)進(jìn)行函數(shù)聲明,代碼開(kāi)始執(zhí)行時(shí),語(yǔ)法都是符合其作用域的。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 激情男女高潮射精AV免费| 搞av.com| YELLOW视频直播在线观看高清| 俄罗斯黄色大片| 久久综合网久久综合| 三级网址在线播放| 最新在线黄色网址| 国语自产一区第二页| 日本xxxxxxx| 69久久国产精品热88人妻| 国产精品成人无码免费视频| 美女穿丝袜被狂躁动态图| 亚洲精品国偷拍自产在线观看蜜臀 | 女同志videos最新另| 一边摸一边桶一边脱免费| 国产精品国产三级国产AV麻豆| 欧美日韩第一区| 69国产精品成人无码视频| 久久成人亚洲| 亚洲三级精品| 蝴蝶中文娱乐| 亚洲高清国产拍精品影院| 国产精品久久久久久久久久久| 日本理论片午午伦夜理片2021| 97无码欧美熟妇人妻蜜| 久久中文字幕免费高清| 亚洲一区免费观看| 花蝴蝶在线观看免费8| 亚洲国产高清视频在线观看| 国产精品永久免费| 无码国产伦一区二区三区视频| 观赏女性排尿| 天天影视网网色色欲| 国产露脸150部国语对白| 熟女理发厅| 国产色婷婷亚洲99麻豆| 性VIDEOSTV另类极品| 国产亚洲tv在线观看| 亚洲精品乱码久久久久久v| 饥渴的40岁熟妇完整版在线| 亚洲免费视频观看|