好程式設計師web前端學習路線分享web測試之Js中的函式
好程式設計師web前端學習路線分享web測試之Js中的函式 , 在JS中,一般使用函式其實就是為了封裝某些操作,或者把編寫的程式進行模組化的操作。
一.函式的宣告方式
1.普通的函式宣告
function box(num1, num2) {
return num1+ num2;
}
2.使用變數初始化函式
var box= function(num1, num2) {
return num1 + num2;
};
3.使用Function建構函式
var box= new Function('num1', 'num2' ,'return num1 + num2');
二.作為值的函式
ECMAScript中的函式名本身就是變數,所以函式也可以作為值來使用。也就是說,不僅可以像傳遞引數一樣把一個函式傳遞給另一個函式,而且可以將一個函式作為另一個函式的結果返回。
function box(sumFunction, num) {
return sumFunction(num);
}
function sum(num) {
return num + 10;
}
var result = box(sum, 10);
三.函式內部屬性
在函式內部,有兩個特殊的物件:arguments和this。arguments是一個類陣列物件,包含著傳入函式中的所有引數,主要用途是儲存函式引數。但這個物件還有一個名叫callee的屬性,該屬性是一個指標,指向擁有這個arguments物件的函式。
function box(num) {
if (num <= 1) {
return 1;
} else {
return num * box(num-1);
}
}
對於階乘函式一般要用到遞迴演算法,所以函式內部一定會呼叫自身;如果函式名不改變是沒有問題的,但一旦改變函式名,內部的自身呼叫需要逐一修改。為了解決這個問題,我們可以使用arguments.callee來代替。
function box(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num-1);
}
}
函式內部另一個特殊物件是this,其行為與Java和C#中的this大致相似。換句話說,this引用的是函式據以執行操作的物件,或者說函式呼叫語句所處的那個作用域。PS:當在全域性作用域中呼叫函式時,this物件引用的就是window。
window.color = '紅色的';
alert(this.color);
var box = {
color : '藍色的',
sayColor : function () {
alert(this.color);
}
};
box.sayColor();
alert(this.color);
四.函式屬性和方法
ECMAScript中的函式是物件,因此函式也有屬性和方法。每個函式都包含兩個屬性:length和prototype。其中,length屬性表示函式希望接收的命名引數的個數。
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()方法相同,他們的區別僅僅在於接收引數的方式不同。對於call()方法而言,第一個引數是作用域,沒有變化,變化只是其餘的引數都是直接傳遞給函式的。
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 : '藍色的'
};
function sayColor() {
alert(this.color);
}
sayColor();
sayColor.call(this);
sayColor.call(window);
sayColor.call(box);
當我們使用call(box)方法的時候,sayColor()方法的執行環境已經變成了box物件。
使用call()或者apply()來擴充作用域的最大好處,就是物件不需要與方法發生任何耦合關係耦合,就是互相關聯的意思,擴充套件和維護會發生連鎖反應。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2654453/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端學習路線分享函式基礎程式設計師Web前端函式
- 好程式設計師web前端分享web測試之Js中的變數程式設計師Web前端JS變數
- 好程式設計師web前端分享初學者必看web前端學習路線圖程式設計師Web前端
- 好程式設計師web前端學習路線分享前端基礎面試題程式設計師Web前端面試題
- 好程式設計師web前端學習路線分享Jsonp詳解程式設計師Web前端JSON
- 好程式設計師web前端分享前端學習路線自學如何找到工作程式設計師Web前端
- 好程式設計師web前端學習路線分享滾動穿透方法程式設計師Web前端穿透
- 好程式設計師web前端學習路線之Javascript物件導向程式設計師Web前端JavaScript物件
- 好程式設計師web前端學習路線分享HTML5常見面試題程式設計師Web前端HTML面試題
- 好程式設計師web前端學習路線分享CSS浮動-文件流篇程式設計師Web前端CSS
- 好程式設計師web前端學習路線分享瞭解AJAX是什麼程式設計師Web前端
- 好程式設計師web前端分享應該怎樣學好web前端?程式設計師Web前端
- 好程式設計師web前端培訓分享JavaScript學習筆記函式進階程式設計師Web前端JavaScript筆記函式
- 好程式設計師web前端教程:Math函式程式設計師Web前端函式
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師Web前端教程分享Vue學習心得程式設計師Web前端Vue
- 好程式設計師web前端學習路線大廠面試題詳解程式設計師Web前端面試題
- 好程式設計師web前端教程分享js閉包程式設計師Web前端JS
- 好程式設計師web前端教程分享js模板模式程式設計師Web前端JS模式
- 好程式設計師web前端學習路線分享CSS浮動-清除浮動篇程式設計師Web前端CSS
- 好程式設計師web前端教程分享Vue.js面試題程式設計師Web前端Vue.js面試題
- 好程式設計師web前端培訓分享JavaScript學習指南程式設計師Web前端JavaScript
- 好程式設計師web前端分享Vue學習筆記(一)程式設計師Web前端Vue筆記
- 好程式設計師web前端分享前端 javascript 練習題程式設計師Web前端JavaScript
- 好程式設計師web前端學習教程之Node Js流程程式設計師Web前端JS
- 好程式設計師web前端學習路線分享純css繪製各種圖形程式設計師Web前端CSS
- 好程式設計師web前端教程分享js中的模組化二程式設計師Web前端JS
- 好程式設計師web前端教程分享js中的模組化一程式設計師Web前端JS
- 好程式設計師web前端教程分享前端javascript練習題之promise程式設計師Web前端JavaScriptPromise
- 好程式設計師分享Web前端知識之HTML程式設計師Web前端HTML
- 好程式設計師web前端培訓分享JavaScript學習筆記之設計模式程式設計師Web前端JavaScript筆記設計模式
- 好程式設計師web前端培訓分享HTMLCSS學習之CSS基礎程式設計師Web前端HTMLCSS
- 好程式設計師web前端分享Nodejs學習筆記之Stream模組程式設計師Web前端NodeJS筆記
- 好程式設計師web前端培訓分享詳解JavaScript學習筆記建構函式程式設計師Web前端JavaScript筆記函式
- 好程式設計師web前端分享想要學習前端需要學那些課程程式設計師Web前端
- 好程式設計師web前端學習路線nodeJs學習過程之認識nodejs程式設計師Web前端NodeJS
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師web前端分享web前端入門知識程式設計師Web前端