亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS聲明式函數(shù)與賦值式函數(shù)實(shí)例分析

 更新時(shí)間:2016年12月13日 11:56:03   作者:鄭浩-  
這篇文章主要介紹了JS聲明式函數(shù)與賦值式函數(shù),結(jié)合實(shí)例形式分析了JS函數(shù)解析的流程與執(zhí)行順序,需要的朋友可以參考下

本文實(shí)例講述了JS聲明式函數(shù)與賦值式函數(shù)。分享給大家供大家參考,具體如下:

引言

“程序是不會(huì)騙人的”我們項(xiàng)目中的一個(gè)哥們經(jīng)常這樣說(shuō),為什么他會(huì)有這樣的感嘆呢?就是有時(shí)候我么程序員會(huì)出現(xiàn)的這樣的問(wèn)題,當(dāng)我們讓別人來(lái)調(diào)試錯(cuò)誤的時(shí)候,別人什么都沒(méi)有說(shuō),在我們給人家復(fù)現(xiàn)錯(cuò)誤的時(shí)候發(fā)現(xiàn),錯(cuò)誤竟然沒(méi)有了,留下自己在風(fēng)中凌亂。此處中槍的童鞋們請(qǐng)頂起來(lái)。。。。。。下面說(shuō)說(shuō)小編給別人調(diào)BUG時(shí)候遇到的問(wèn)題如下:

請(qǐng)聽(tīng)題:說(shuō)出下面幾段js腳本的結(jié)果是什么?

<script type="text/javascript">
   Fn(); //執(zhí)行結(jié)果:?????
   function Fn(){
    alert("執(zhí)行了定義式函數(shù)");
   }
</script>
<script type="text/javascript">
   Fn(); //執(zhí)行結(jié)果:?????
  var Fun= function(){
    alert("執(zhí)行了賦值式函數(shù)");
   }
</script>
<script type="text/javascript">
   Fn(); //執(zhí)行結(jié)果:?????
   function Fn(){
    alert("執(zhí)行了函數(shù)1");
   }
   function Fn(){
    alert("執(zhí)行了函數(shù)2");
   }
</script>

如果你能很好的得出答案的話,說(shuō)明你對(duì)JS的這兩種函數(shù)以及他們?cè)趫?zhí)行順序方面是比較清楚的,所以下面的講解你就可帶著審判的眼光來(lái)閱讀了,否則的話你就不得不好好看看下面的講解了,也許下面的講解會(huì)給你一些額外的驚喜。

通過(guò)上面的代碼中alet中的內(nèi)容我們就可以分辨出這兩種函數(shù),這兩種函數(shù)在js執(zhí)行的時(shí)候會(huì)出現(xiàn)一些區(qū)別,在JS的預(yù)編譯期,聲明式函數(shù)將會(huì)先被提取出來(lái),然后才按順序執(zhí)行js代碼。

事實(shí)上,JS的解析過(guò)程分為兩個(gè)階段:預(yù)編譯期(預(yù)處理)與執(zhí)行期。

預(yù)編譯期JS會(huì)對(duì)本代碼塊中的所有聲明的變量和函數(shù)進(jìn)行處理(類(lèi)似與C語(yǔ)言的編譯),但需要注意的是此時(shí)處理函數(shù)的只是聲明式函數(shù),而且變量也只是進(jìn)行了聲明但未進(jìn)行初始化以及賦值。知道了這個(gè)原理以后我們就可以很好的分析上面的第一段js代碼了,第一個(gè)js代碼塊得出的結(jié)果是:執(zhí)行了alert函數(shù);而第二個(gè)js代碼塊得出的結(jié)果是:瀏覽器保存,提示函數(shù)未定義!這就是這兩種函數(shù)的不同。

第二段js代碼就是買(mǎi)一贈(zèng)一優(yōu)惠政策,給讀者贈(zèng)送的一些東西了,它執(zhí)行的結(jié)果是:彈出"執(zhí)行了函數(shù)2",這是因?yàn)樵趈s中重名的函數(shù),后定義的會(huì)覆蓋前面定義的函數(shù),這種策略和js的順序執(zhí)行也是有關(guān)系的。小編在最近就是因?yàn)橛龅搅诉@種函數(shù)給我代碼的麻煩所以才查了一些資料來(lái)整理了這篇博客。

小結(jié)

在開(kāi)始的時(shí)候代碼中寫(xiě)是賦值式函數(shù),但是調(diào)用的代碼寫(xiě)在了函數(shù)的前面從而導(dǎo)致程序出錯(cuò),因?yàn)橹皩?duì)于賦值式函數(shù)見(jiàn)到的并不多,這不知道這兩種函數(shù)的區(qū)別,所以相當(dāng)熱的認(rèn)為將調(diào)用函數(shù)的代碼寫(xiě)在函數(shù)定義之前和之后是沒(méi)有影響的,所以給小編帶來(lái)很大的困惑。當(dāng)然也是我們思想上的相當(dāng)然帶來(lái)的后果,一些東西我們并沒(méi)有去驗(yàn)證就認(rèn)為應(yīng)該是這樣的,從而給我們帶來(lái)阻礙,在此也給廣大程序猿們警告哦。。。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript遍歷算法與技巧總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論