1、函式宣告方式
1)普通宣告方式
function box(num1,num2)
2)使用變數初始化函式
var box = function(num1,num2)
3)使用function建構函式
var box = new function('num1','num2','return num1 + num2');不推薦
2、作為值的函式??:可像傳遞引數一樣把乙個函式傳遞給另乙個函式,也可將乙個函式作為另乙個函式的結果範回。(**函式)
function box(sumfunction,num)
function sum(sum)
var result = box(sum,10);//傳遞函式到另乙個函式
理解:**函式典型示例
eg. var friends = ['linda','mike','bob','lucy'];
friedns.foreach(function(name,index));
**函式實現原理:
我們可以像使用變數一樣使用函式,作為另乙個函式的引數,在另乙個函式中作為返回結果,在另乙個函式中呼叫它。當我們作為引數傳遞乙個**函式給另乙個函式時,我們只傳遞了這個函式的定義,並沒有在引數中執行它。
當包含(呼叫)函式擁有了在引數中定義的**函式後,它可以在任何時候呼叫(也就是**)它。
這說明**函式並不是立即執行,而是在包含函式的函式體內指定的位置「**」它(形如其名)。所以,即使第乙個jquery的例子看起來是這樣:
3、函式內部屬性
1)函式內部的特殊物件:arguments
arguments是乙個類陣列物件,包含傳入函式中的所有引數,主要用於儲存函式引數;該物件有個屬性callee,即指標,可指向擁有該物件的函式。
function arg(n1) else
}console.log(arg(4));//n1=3,arg(3)=3*2=6;n1=6,arg(6)= 6*5*4*3*2=720
/*使用arguments.callee的原因:消除函式執行與函式名緊密耦合,
* 即函式名改變後內部自身呼叫不用逐一修改
* */
function arg1(n2) else
}console.log(arg1(4));//控制台報錯
2)函式內部的特殊物件:
this
this引用的是函式資料以執行操作的物件,或者說函式呼叫語句所處的那個作用域;當在全域性作用域中呼叫函式時,this物件引用的就是window。
1.// 在全域性變數中,this為window
window.onload= function()
this.onload= function()
2.//在函式中時,this為window物件
function obj(pra)
obj("this為window物件");
alert(sear);
3.//this在物件中,this就為該物件
var name = "物件";
var person =
}person.xiu();//user
4.//this遇上new時,this為新建立的物件(obj)
function fun()
var obj = new fun();
alert(obj.name); //新物件
5. //this在內部函式中,this為window
var name = "內部函式";
var person = ;
sayhello();}}
person.hello();//內部函式
6.//this在內部函式中,若在物件中將this作為變數儲存下來,this就指向該物件
var name = "修抗";
var person = ;
sayhello();}}
person.hello();//user
《JS高程》 Function引用型別
答 三種定義方法 答 兩個區別 答 函式名實際是乙個指向函式物件的指標,不會與某個函式繫結。答 函式沒有過載。宣告了兩個同名的函式時,後面的函式將會覆蓋前面的函式,原理為 函式名只是乙個指向函式物件的指標。答 函式可以作為值來使用,不僅可以將乙個函式傳遞給另乙個函式,還可以將乙個函式作為另乙個函式的...
js 中的Function型別
函式的建立有兩種方式 二者基本等價,除了 什麼時候可通過變數訪問函式的區別,以下將舉例證明。以函式宣告的方式來建立,那麼不論在什麼時候訪問函式,都是正確的,因為解析器有函式宣告提公升。sayhello function sayhello 以函式表示式方式來建立,那麼只能在建立之後才能訪問。sayhe...
引用型別 Function型別
1.function型別 函式是物件,是function型別的例項,有屬性和方法。函式是物件,函式名是指向函式物件的指標。2.定義函式的方法 函式宣告語法定義 function sum num1,num2 而對於函式表示式定義函式,解析器直到執行到他所在的 行,才會被真正解析執行。alert sum...