javascript基礎篇--function類型(上)

來源:互聯網
上載者:User


在js中,function類型實際上是對象,每個函數都是function類型的一個執行個體。而且與其他參考型別一樣具有屬性和方法。

聲明

1普通方式


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對象,所以是windowcolorbox.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介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.