国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS聲明式函數與賦值式函數實例分析

2019-11-19 18:31:34
字體:
來源:轉載
供稿:網友

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

引言

“程序是不會騙人的”我們項目中的一個哥們經常這樣說,為什么他會有這樣的感嘆呢?就是有時候我么程序員會出現的這樣的問題,當我們讓別人來調試錯誤的時候,別人什么都沒有說,在我們給人家復現錯誤的時候發現,錯誤竟然沒有了,留下自己在風中凌亂。此處中槍的童鞋們請頂起來。。。。。。下面說說小編給別人調BUG時候遇到的問題如下:

請聽題:說出下面幾段js腳本的結果是什么?

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

如果你能很好的得出答案的話,說明你對JS的這兩種函數以及他們在執行順序方面是比較清楚的,所以下面的講解你就可帶著審判的眼光來閱讀了,否則的話你就不得不好好看看下面的講解了,也許下面的講解會給你一些額外的驚喜。

通過上面的代碼中alet中的內容我們就可以分辨出這兩種函數,這兩種函數在js執行的時候會出現一些區別,在JS的預編譯期,聲明式函數將會先被提取出來,然后才按順序執行js代碼。

事實上,JS的解析過程分為兩個階段:預編譯期(預處理)與執行期。

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

第二段js代碼就是買一贈一優惠政策,給讀者贈送的一些東西了,它執行的結果是:彈出"執行了函數2",這是因為在js中重名的函數,后定義的會覆蓋前面定義的函數,這種策略和js的順序執行也是有關系的。小編在最近就是因為遇到了這種函數給我代碼的麻煩所以才查了一些資料來整理了這篇博客。

小結

在開始的時候代碼中寫是賦值式函數,但是調用的代碼寫在了函數的前面從而導致程序出錯,因為之前對于賦值式函數見到的并不多,這不知道這兩種函數的區別,所以相當熱的認為將調用函數的代碼寫在函數定義之前和之后是沒有影響的,所以給小編帶來很大的困惑。當然也是我們思想上的相當然帶來的后果,一些東西我們并沒有去驗證就認為應該是這樣的,從而給我們帶來阻礙,在此也給廣大程序猿們警告哦。。。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》及《JavaScript遍歷算法與技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 胶州市| 咸丰县| 涞水县| 温泉县| 榆社县| 柯坪县| 姚安县| 临夏市| 吴忠市| 万安县| 昂仁县| 绥宁县| 屏东市| 阜康市| 聊城市| 武平县| 南宫市| 陇南市| 曲阳县| 东乌| 平邑县| 双鸭山市| 潼南县| 阳原县| 湖口县| 保德县| 昌吉市| 河南省| 林口县| 芜湖市| 疏附县| 衡水市| 叙永县| 于都县| 久治县| 德化县| 永靖县| 鄂托克前旗| 福建省| 横峰县| 丰城市|