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

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

javascript function(函數(shù)類(lèi)型)使用與注意事項(xiàng)小結(jié)

2024-05-06 15:38:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了javascript function(函數(shù)類(lèi)型)使用與注意事項(xiàng)。分享給大家供大家參考,具體如下:

在ECMAScript中,F(xiàn)unction(函數(shù))類(lèi)型實(shí)際上是對(duì)象。每個(gè)函數(shù)都是Function類(lèi)型的實(shí)例,而且都與其他引用類(lèi)型一樣具有屬性和方法。由于函數(shù)是對(duì)象,因此函數(shù)名實(shí)際上也是一個(gè)指向函數(shù)對(duì)象的指針。

學(xué)習(xí)要點(diǎn):

1.函數(shù)的聲明方式
2.作為值的函數(shù)
3.函數(shù)的內(nèi)部屬性
4.函數(shù)屬性和方法

一.函數(shù)的聲明方式

1.普通的函數(shù)聲明

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

2.使用變量初始化函數(shù)

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

3.使用Function構(gòu)造函數(shù)

var box= new Function('num1', 'num2' ,'return num1 + num2');

PS:第三種方式我們不推薦,因?yàn)檫@種語(yǔ)法會(huì)導(dǎo)致解析兩次代碼(第一次解析常規(guī)ECMAScript代碼,第二次是解析傳入構(gòu)造函數(shù)中的字符串),從而影響性能。但我們可以通過(guò)這種語(yǔ)法來(lái)理解"函數(shù)是對(duì)象,函數(shù)名是指針"的概念。

二.作為值的函數(shù)

ECMAScript中的函數(shù)名本身就是變量,所以函數(shù)也可以作為值來(lái)使用。也就是說(shuō),不僅可以像傳遞參數(shù)一樣把一個(gè)函數(shù)傳遞給另一個(gè)函數(shù),而且可以將一個(gè)函數(shù)作為另一個(gè)函數(shù)的結(jié)果返回。

function box(sumFunction, num) {  return sumFunction(num); //someFunction}function sum(num) {  return num + 10;}var result = box(sum, 10); //傳遞函數(shù)到另一個(gè)函數(shù)里

三.函數(shù)內(nèi)部屬性

在函數(shù)內(nèi)部,有兩個(gè)特殊的對(duì)象:arguments和this。arguments是一個(gè)類(lèi)數(shù)組對(duì)象,包含著傳入函數(shù)中的所有參數(shù),主要用途是保存函數(shù)參數(shù)。但這個(gè)對(duì)象還有一個(gè)名叫callee的屬性,該屬性是一個(gè)指針,指向擁有這個(gè)arguments對(duì)象的函數(shù)。

function box(num) {  if (num <= 1) {    return 1;  } else {    return num * box(num-1); //一個(gè)簡(jiǎn)單的的遞歸  }}

對(duì)于階乘函數(shù)一般要用到遞歸算法,所以函數(shù)內(nèi)部一定會(huì)調(diào)用自身;如果函數(shù)名不改變是沒(méi)有問(wèn)題的,但一旦改變函數(shù)名,內(nèi)部的自身調(diào)用需要逐一修改。為了解決這個(gè)問(wèn)題,我們可以使用arguments.callee來(lái)代替。

function box(num) {  if (num <= 1) {    return 1;  } else {    return num * arguments.callee(num-1);//使用callee來(lái)執(zhí)行自身  }}

函數(shù)內(nèi)部另一個(gè)特殊對(duì)象是this,其行為與Java和C#中的this大致相似。換句話說(shuō),this引用的是函數(shù)據(jù)以執(zhí)行操作的對(duì)象,或者說(shuō)函數(shù)調(diào)用語(yǔ)句所處的那個(gè)作用域。PS:當(dāng)在全局作用域中調(diào)用函數(shù)時(shí),this對(duì)象引用的就是window。

//便于理解的改寫(xiě)例子window.color = '紅色的'; //全局的,或者var color = '紅色的';也行alert(this.color); //打印全局的colorvar box = {  color : '藍(lán)色的', //局部的color  sayColor : function () {    alert(this.color); //此時(shí)的this只能box里的color  }};box.sayColor(); //打印局部的coloralert(this.color); //還是全局的            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 华池县| 文成县| 长阳| 左权县| 茌平县| 兴文县| 枣庄市| 屏东市| 衡山县| 新河县| 年辖:市辖区| 北碚区| 保德县| 岫岩| 永福县| 平罗县| 诸城市| 卢龙县| 龙游县| 望谟县| 上虞市| 柞水县| 卫辉市| 贞丰县| 汾阳市| 九江县| 平山县| 迭部县| 保山市| 乌鲁木齐市| 闵行区| 西吉县| 云霄县| 镇康县| 祁连县| 珠海市| 邓州市| 双辽市| 大足县| 自贡市| 资中县|