javascript的函數(4)

來源:互聯網
上載者:User

指標的指向

我們能夠在一個函數建立之後重新分配它,但是我們需要指向函數對象本身,而不是指向它的指標。在下例中,我將改變myfunction()的內容。

Example 6:

CODE:
function myFunction()
{
  alert("Old");
}
myFunction(); // 輸出 "Old"
myFunction=function()
{
  alert("New");
};
myFunction(); // 輸出 "New"

舊函數哪裡去了??被拋棄了。

如果我們需要保留它,我們可以在改變它之前給它分配一個指標。

Example 6A:

CODE:
function myFunction()
{
  alert("Old");
}
var savedFuncion=myFunction;
myFunction=function()
{
  alert("New");
};
myFunction();    // 輸出 "New"
savedFuncion();  // 輸出 "Old"

不過要小心,象下面這樣的例子並不會有作用,因為是建立了另一個叫做myFunctionPtr的函數而不是修改它。

Example 6B:

CODE:
function myFunction()
{
  alert("Old");
}
var savedFunc=myFunction;
savedFunc=function()
{
  alert("New");
};
myFunction();            // 輸出 "Old"
savedFunc();             // 輸出 "New"

內嵌函數

我們還能夠在一個函數中嵌套一個函數。下例,我有一個叫做getHalfOf的函數,而在它裡面,我有另一個叫做calculate的函數。

Example 7

CODE:

function getHalfOf(num1, num2, num3)    
{
  function calculate(number)
  {
    return number/2;
  }

  var result="";
  result+=calculate(num1)+" ";
  result+=calculate(num2)+" ";
  result+=calculate(num3);
}        
var resultString=getHalfOf(10,20,30);
alert(resultString);         // 輸出 "5 10 15"

你只能在內部調用嵌套的函數。就是說,你不能這麼調用:getHalfOf.calculate(10),因為calculate只有當外部函數(getHalfOf())在啟動並執行時候才會存在。這和我們前面的討論一致(函數會被編譯,但只有當你去調用它的時候才會執行)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.