【javascript】關於函數的定義

來源:互聯網
上載者:User

函數使用關鍵字 function 來定義,定義的方式有兩種——函數定義運算式和函式宣告語句。下面範例程式碼中的兩種定義寫法:

//函數定義運算式var square = function(x){    return x * x;};//函式宣告語句function square(x){    return x * x;};

儘管函式宣告語句和函數定義運算式包含相同的函數名,但二者仍然不同。和通過 var 聲明變數一樣,函數定義語句中的函數被顯式地“提前”到了指令碼或函數的頂部。因此它們在整個指令碼和函數內都是可見的。使用 var 的話,只有變數聲明提前了——變數的初始化代碼仍然在原來的位置。然而使用函式宣告語句的話,函數名稱和函數體均提前:指令碼中的所有函數和函數中的所有嵌套的函數都會在當前上下文中其他代碼之前聲明。也就是說,可以在聲明一個 javascript 函數之前調用它。

<!DOCTYPE HTML><html lang="en-US"><head>    <meta charset="UTF-8">    <title>js-function</title></head><body>    </body></html><script type="text/javascript">distance(0,0,3,4);//函式宣告語句————無論定義在哪裡,都會被“提前”到指令碼或函數的頂部。function distance(x1,y1,x2,y2){    var dx = x2 - x1;    var dy = y2 - y1;    alert(Math.sqrt(square(dx) + square(dy)));};//函數定義運算式————只有變數聲明提前了,而變數的初始化代碼仍然在原來的位置。需要注意js執行順序。var square = function(x){    return x * x;};</script>

上面的代碼,由於 square 是函數定義運算式並且定義在了最後,導致在執行 distance 函數的時候,square 的值是 undefined。

解決方案:

1、將函數定義運算式寫法改成函式宣告語句寫法。

2、將函數定義運算式寫在執行函數(distance(0,0,3,4);)之前。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.