最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從階乘函數(shù)對比Javascript和C#的異同

 更新時間:2012年05月31日 01:06:36   作者:  
今天學習Javascript函數(shù),發(fā)現(xiàn)這完全是一個神奇的東西。跟我們平常所見強類型語言中的函數(shù)有好多不同。下面我們就從C#和JavaScript的兩個計算階乘的函數(shù)中比較兩者的異同
JavaScript代碼塊
復制代碼 代碼如下:

                  
<script type="text/javascript">
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var trueFactorial = factorial;
factorial = function () {
return 0;
}
alert(trueFactorial(5)); //120
alert(factorial(5)); //0
</script>

C#代碼塊
復制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
{
TestFactorial();
}
public delegate int factorialDelegate(int num); //定義遞歸函數(shù)委托
private void TestFactorial()
{
factorialDelegate fdelegate = factorial; //請注意與javascript函數(shù)對比
factorialDelegate trueFactorial = fdelegate;
fdelegate = returnZero;
int num1 = trueFactorial(5); //120
int num2 = fdelegate(5); //0
}
private int returnZero(int num)
{
return 0;
}
private int factorial(int num)
{
if (num <= 1)
{
return 1;
}
else
{
return num * factorial(num - 1);
}
}

從上面,可以看出:
1、javascript中的函數(shù)都不需要設定函數(shù)是否有返回值,既然如此那么函數(shù)的返回值類型當然也就沒有必要設置了。
2、在javascript中的函數(shù)竟然是一個對象,這個我們接觸的強類型的語言(C、C++、C#)有很大的不同。
3、javascript中有一個類數(shù)組對象arguments ,包含著傳入函數(shù)中的所有參數(shù)。而且這個對象還有一個名叫callee的屬性,該屬性是一個指針,指向擁有這個arguments對象的函數(shù)??匆幌?,C#代碼塊,委托trueFactorial的執(zhí)行和函數(shù)factorial緊緊地耦合在一起。我們沒有辦法消除這種緊密耦合的現(xiàn)象。而在上面javascript代碼塊中,當變量trueFactorial獲得了factorial的值。然后,我們又簡單地將一個返回0的函數(shù)賦值給了factorial變量。如果像原來那樣不使用arguments.callee,調(diào)用trueFactorial()就會返回0。在解除了函數(shù)體內(nèi)的代碼與函數(shù)名的耦合狀態(tài)之后,trueFactorial()仍然能夠正常計算階乘。至于factorial(),他現(xiàn)在只是一個返回0的函數(shù)。

參考書籍《Javascript高級程序設計
部分文字來自以上書籍

相關(guān)文章

  • Rxjs?中處理錯誤和抓取錯誤的代碼案例

    Rxjs?中處理錯誤和抓取錯誤的代碼案例

    這篇文章主要介紹了Rxjs?中怎么處理和抓取錯誤,本文,我們學習了如何使用?catchError?在數(shù)據(jù)流中抓取錯誤,怎么去修改和返回?observable,或者使用?EMPTY?不去觸發(fā)組件中的錯誤,需要的朋友可以參考下
    2022-08-08
  • 基于casperjs和resemble.js實現(xiàn)一個像素對比服務詳解

    基于casperjs和resemble.js實現(xiàn)一個像素對比服務詳解

    這篇文章主要給大家介紹了關(guān)于基于casperjs和resemble.js實現(xiàn)一個像素對比服務的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • JavaScript通過nodejs進行后端開發(fā)的過程

    JavaScript通過nodejs進行后端開發(fā)的過程

    本文系統(tǒng)介紹了Node.js后端開發(fā)流程,涵蓋環(huán)境搭建、HTTP服務器創(chuàng)建(http/Express)、路由中間件、數(shù)據(jù)庫集成(MongoDB/MySQL)、JWT認證、文件上傳、錯誤處理及部署(PM2/Docker),并提供項目結(jié)構(gòu)建議,助你快速構(gòu)建應用,感興趣的朋友一起看看吧
    2025-06-06
  • Ajax基礎知識詳解

    Ajax基礎知識詳解

    本文主要介紹了Ajax基礎知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • js無刷新操作table的行和列

    js無刷新操作table的行和列

    這篇文章主要介紹了js操作table的行和列,無刷新實現(xiàn),需要的朋友可以參考下
    2014-03-03
  • JavaScript?讀取及寫入本地文件的操作方法

    JavaScript?讀取及寫入本地文件的操作方法

    文章介紹了在純前端JavaScript中如何讀取和寫入本地文件,瀏覽器環(huán)境限制了直接訪問文件系統(tǒng),但提供了文件上傳和下載功能,對于文件讀取,可以使用FileReader?API,支持分片讀取和流式處理,感興趣的朋友一起看看吧
    2025-03-03
  • 微信小程序 數(shù)據(jù)封裝,參數(shù)傳值等經(jīng)驗分享

    微信小程序 數(shù)據(jù)封裝,參數(shù)傳值等經(jīng)驗分享

    這篇文章主要介紹了微信小程序 數(shù)據(jù)封裝,參數(shù)傳值等經(jīng)驗分享的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 非常漂亮的JS+CSS圖片幻燈切換特效

    非常漂亮的JS+CSS圖片幻燈切換特效

    放在你的首頁比較不錯,寬屏圖片格式,每張圖片平滑飛入切換,鼠標放上自動切換,和FLASH的平滑效果差不多,喜歡的朋友可以收藏下
    2013-11-11
  • js下彈出窗口的變通

    js下彈出窗口的變通

    js下彈出窗口的變通...
    2007-04-04
  • 解讀ES6中class關(guān)鍵字

    解讀ES6中class關(guān)鍵字

    這篇文章主要介紹了ES6中class關(guān)鍵字,class是es6引入的最重要特性之一。本文通過實例代碼給大家詳解,需要的朋友可以參考下
    2017-11-11

最新評論

佛冈县| 边坝县| 河源市| 江永县| 托里县| 蓝田县| 利川市| 白玉县| 景德镇市| 泸州市| 新龙县| 连云港市| 融水| 绥宁县| 仁怀市| 镇原县| 万源市| 翁牛特旗| 东方市| 江陵县| 垫江县| 白银市| 温宿县| 临潭县| 澄迈县| 财经| 青海省| 修文县| 新疆| 凤凰县| 如东县| 崇明县| 资兴市| 巩留县| 莲花县| 鞍山市| 湖北省| 会宁县| 社会| 无为县| 晋中市|