2025-04-23

vcD4KPHA+1Npqc9bQo6xmdW5jdGlvbsDg0M3KtbzKyc/Kx7bUz/OjrMO/uPa6r8r9trzKx2Z1bmN0aW9uwODQzbXE0ru49sq1wP2ho7b4x9LT68bky/vS/dPDwODQzdK70fm+39PQyvTQ1LrNt723qKGjPC9wPgo8cD4gPC9wPgo8aDI+yfnD9zwvaDI+Cjxicj4KCjxwPjxzdHJvbmc+McbVzai3vcq9PC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjxicj4KPC9zdHJvbmc+PC9wPgo8cCBsYW5nPQ==”en-US”>

Function sum(num1,num2)
{
Return num1+num2;
}

2使用變量初始化函數

Var sum=function(num1,num2)
{
Return num1+num2;
 
}

以上兩種方式是常用的方式,當然還有其他方式,但相比還是以上更優越。

定義函數,為的就是使用方便。這裡隻對內部屬性進行簡單瞭解

函數內部屬性

任何函數內部,都有兩個特殊的對象,arguments 和 this

arguments為數組對象,包含傳遞的所有參數。this是它所處對象的作用域。

arguments

例如

一個遞歸的函數調用
Functionsum(num){
  If(num<=1){
   Return 1;
}else{
  Return num*box(num-1);
 }
}

對於求和完全沒有問題,倘若函數名修改瞭,那麼遞歸中的函數就會報錯瞭。所以為瞭解決這個問題,我們可以使用函數自身的 arguments.callee 解決。

Function sum(num){
If(num<=1){
      Return 1;
}else{
Return num*arguments.callee(num-1);
}
}

This使用

先前認為自己理解的很到位,但是我看到以下源碼的時候還是有偏差的。

window對象是js中最大的對象,也是最外圍的

所有全局的變量都是window的屬性。所以就有

Varcolor=’紅色的’

Alert(this.color);

Alert(window.color)

兩者是相同的結果,這裡color為全局變量,所以是window的屬性。this代表的就是windows

Window.color=’紅色的’

Var box={
   Color:'藍色的',
   sysColor:function(){
     Alert(this.color);
   }
}
 
alert(this.color);//此處的this外層是window對象,所以是windowcolor
box.sysColor();//box的color

======================================================================

Window.color='紅色的'
 
Function sayColor(){
Alert(this.color);
//這裡是一個動態的this,註意范圍的變化
}
 sayColor();
 
Var box={
Color:'藍色的'
}
Box.sayColor=sayColor;
Box.sayColor();//藍色

以上對this的基本認識,也是最常用的范圍變換,this代表包圍它對象自身。

Call()和apply()方法

表面上他們是對其他函數的調用,但是不要被他們的表象所迷惑瞭,真實作用是修改函數的作用域

Var color='紅色的';
Var box={
Color:'藍色的';
}
 
Function sayColor(){
Alert(this.color);
}
 saycolor();//紅色
sayColor.call(this);//this為window//紅色
sayColorcall(box);////藍色 ;冒充box,作用域就在box對象中

Call,apply的參數為

Apply(對象作用域,參數);

函數的定義,其最後還是為調用,那麼調用的類型有哪些呢,

函數調用

1作為函數的返回值

與普通變量一樣。

function box(sum,num){
returnsum+num;        
}
 
function sum(num){
returnnum+10;
}
 
varresult=box(sum(10),10);
alert(result);

這裡我們可以看到輸出的結果是30,這裡sun返回的是一個具體的數值。

函數當做參數傳遞

對以上函數進行變型

function box(sum,num){
return sum(num);        
}
 
function sum(num){
returnnum+10;
}
 
var result=box(sum,10);
alert(result);

輸出為20,還是一個數值,但是這裡的參數sum已經不再是一個具體額的數值瞭,而是一個具體的函數。在box函數中,參數是一個sun函數。

小結:

該內容為funtion的內部的基本屬性和方法的認識,js的函數與其他語言的函數是很相識的,也是源於object類型,期也有this和arguments等參數組。與main函數很是相識,對比j2ee中的函數以及其他語言的屬性也是類型的,如未說明的length,property屬性等。

property原型,請參見下篇function介紹

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *