好程序員web前端學(xué)習(xí)路線分享web測(cè)試之Js中的函數(shù)

好程序員web前端學(xué)習(xí)路線分享web測(cè)試之Js中的函數(shù),在JS中,一般使用函數(shù)其實(shí)就是為了封裝某些操作,或者把編寫的程序進(jìn)行模塊化的操作。
一.函數(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');
二.作為值的函數(shù)
ECMAScript中的函數(shù)名本身就是變量,所以函數(shù)也可以作為值來使用。也就是說,不僅可以像傳遞參數(shù)一樣把一個(gè)函數(shù)傳遞給另一個(gè)函數(shù),而且可以將一個(gè)函數(shù)作為另一個(gè)函數(shù)的結(jié)果返回。
function box(sumFunction, num) {
return sumFunction(num);
}
function sum(num) {
return num + 10;
}
var result = box(sum, 10);
三.函數(shù)內(nèi)部屬性
在函數(shù)內(nèi)部,有兩個(gè)特殊的對(duì)象:arguments和this。arguments是一個(gè)類數(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);
}
}
對(duì)于階乘函數(shù)一般要用到遞歸算法,所以函數(shù)內(nèi)部一定會(huì)調(diào)用自身;如果函數(shù)名不改變是沒有問題的,但一旦改變函數(shù)名,內(nèi)部的自身調(diào)用需要逐一修改。為了解決這個(gè)問題,我們可以使用arguments.callee來代替。
function box(num) {
if (num <= 1) {
return 1;
} else {
return num
arguments.callee(num-1);
}
}
函數(shù)內(nèi)部另一個(gè)特殊對(duì)象是this,其行為與Java和C#中的this大致相似。換句話說,this引用的是函數(shù)據(jù)以執(zhí)行操作的對(duì)象,或者說函數(shù)調(diào)用語句所處的那個(gè)作用域。PS:當(dāng)在全局作用域中調(diào)用函數(shù)時(shí),this對(duì)象引用的就是window。
window.color = '紅色的';
alert(this.color);
var box = {
color : '藍(lán)色的',
sayColor : function () {
alert(this.color);
}
};
box.sayColor();
alert(this.color);
四.函數(shù)屬性和方法
ECMAScript中的函數(shù)是對(duì)象,因此函數(shù)也有屬性和方法。每個(gè)函數(shù)都包含兩個(gè)屬性:length和prototype。其中,length屬性表示函數(shù)希望接收的命名參數(shù)的個(gè)數(shù)。
function box(name, age) {
alert(name + age);
}
alert(box.length);
function box(num1, num2) {
return num1 + num2;
}
function sayBox(num1, num2) {
return box.apply(this, [num1, num2]); }
function sayBox2(num1, num2) {
return box.apply(this, arguments);
}
alert(sayBox(10,10));
alert(sayBox2(10,10));
call()方法于apply()方法相同,他們的區(qū)別僅僅在于接收參數(shù)的方式不同。對(duì)于call()方法而言,第一個(gè)參數(shù)是作用域,沒有變化,變化只是其余的參數(shù)都是直接傳遞給函數(shù)的。
function box(num1, num2) {
return num1 + num2;
}
function callBox(num1, num2) {
return box.call(this, num1, num2);
}
alert(callBox(10,10));
var color = '紅色的';
var box = {
color : '藍(lán)色的'
};
function sayColor() {
alert(this.color);
}
sayColor();
sayColor.call(this);
sayColor.call(window);
sayColor.call(box);
當(dāng)我們使用call(box)方法的時(shí)候,sayColor()方法的運(yùn)行環(huán)境已經(jīng)變成了box對(duì)象。
使用call()或者apply()來擴(kuò)充作用域的最大好處,就是對(duì)象不需要與方法發(fā)生任何耦合關(guān)系耦合,就是互相關(guān)聯(lián)的意思,擴(kuò)展和維護(hù)會(huì)發(fā)生連鎖反應(yīng)。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了縉云免費(fèi)建站歡迎大家使用!

文章題目:好程序員web前端學(xué)習(xí)路線分享web測(cè)試之Js中的函數(shù)
當(dāng)前網(wǎng)址:http://www.muchs.cn/article6/phddog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站建設(shè)、做網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)微信公眾號(hào)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司