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

首頁 > 語言 > JavaScript > 正文

ECMAScript中函數function類型

2024-05-06 16:21:11
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了ECMAScript中函數function類型的相關資料,需要的朋友可以參考下
 

說起來ECMAScript中上面最有意思,我想那莫過于函數了,有意思的根源,則在于函數實際上是對象。每個函數都是Function類型的實例,而且都與其他引用類型一樣具有屬性和方法。由于函數是對象,因此函數名實際上也是一個指向函數對象的指針,不會與某個函數綁定。函數通常是使用函數聲明語法定義的,如下例子:

 

復制代碼代碼如下:

 function sum(num1,num2)
 {
    return num1+num2;
 }

 

這與下面使用函數表達式定義函數的方式幾乎相差無幾。

 

復制代碼代碼如下:

 var sum=function(num1,num2)
 {
     return num1+num2;
 };

 

  以上代碼定了變量sum并將其初始化為一個函數。你們會注意到,function關鍵字后面沒有函數名。這是因為在使用函數表達式定義函數時,沒有必要使用函數名(通過變量sum既可以引用函數)。另外,還要注意函數末尾有一個分號,就像聲明其他變量時一樣。

  最后一種定義函數的方式是使用Function構造函數。Function構造函數可以接受任意數量的參數,但最后一個參數始終都會被看成函數體,而前面的參數則枚舉出了新函數的參數。如下例子:

 

復制代碼代碼如下:

var sum=new Function("num1","num2","return num1+num2");//不推薦 

 

  從技術角度講,這是一個函數表達式。但是,我們不推薦使用這種方法定義函數, 因為這種語法會導致解析兩次代碼(第一次解析常規的ECMAScript代碼,第二次是解析傳入構造函數中的字符串),從而影響性能。不過,這種語法對于理解“函數是對象,函數名是指針”的概念都是非常直觀的。

由于函數名僅僅是指向函數的指針,因此函數名與包含對象指針的其他變量沒有什么不同。換句話說,一個函數可能會有多個名字,如下例子:

 

復制代碼代碼如下:

function sum(num1,num2)
{
    return num1+num2;
}
alert(sum(10,10));//20
var anotherSum=sum;
alert(anotherSum(10,10));//20
sum=null;
alert(anotherSum(10,10));//20 

 

  以上代碼首先定義了一個名為sum()的函數,用于求兩個值的和。然后,有聲明了變量anotherSum,并將其設置為sum()相等(將sum的值賦給anotherSum)。注意,使用不帶圓括號的函數名是訪問函數指針,而非調用函數。此時,anotherSum和sum 就指向了同一個函數,因此anotherSum()也可以被調用并返回結果。即使將sum設置為null,讓它與函數“斷絕關系”,但仍然可以證明正常調用anotherSum()。

以上所述就是本文的全部內容了,希望能夠對大家學習javascript有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 张掖市| 新疆| 廊坊市| 仁化县| 凤冈县| 东明县| 巴彦淖尔市| 兴安县| 内丘县| 抚州市| 文登市| 华坪县| 临夏县| 临汾市| 卓资县| 宜兰市| 天等县| 江门市| 唐山市| 喀什市| 龙山县| 任丘市| 瑞丽市| 铜陵市| 洱源县| 沙河市| 额济纳旗| 泌阳县| 通江县| 板桥市| 榕江县| 鹤峰县| 龙里县| 信阳市| 象山县| 莎车县| 合作市| 五大连池市| 黄大仙区| 平度市| 张掖市|